mirror of
https://github.com/misode/misode.github.io.git
synced 2026-04-29 17:32:43 +00:00
Compare commits
56 Commits
ca36fc9c26
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
361921cf34 | ||
|
|
9c16455eae | ||
|
|
0eec3753b4 | ||
|
|
88ce717726 | ||
|
|
888f3ae341 | ||
|
|
59a5321bf9 | ||
|
|
06ae1f5c0e | ||
|
|
319cfe6044 | ||
|
|
307e6dc46c | ||
|
|
c2b5529a60 | ||
|
|
9540a46e78 | ||
|
|
271cab4c24 | ||
|
|
c68ba4faea | ||
|
|
39f4ecc504 | ||
|
|
f243be3d5e | ||
|
|
84028a06f1 | ||
|
|
ef17f8a5e5 | ||
|
|
1f8be81f50 | ||
|
|
e02c26f6db | ||
|
|
8d4e194195 | ||
|
|
1ec1739bfd | ||
|
|
d1f659f825 | ||
|
|
c8e1714859 | ||
|
|
1bd7ad880a | ||
|
|
1836668c1f | ||
|
|
1b70e60552 | ||
|
|
8a6232183e | ||
|
|
be7ed77637 | ||
|
|
a3d8242519 | ||
|
|
10b604cf43 | ||
|
|
390844275a | ||
|
|
c089d70554 | ||
|
|
971db423f3 | ||
|
|
a5bcbeebcf | ||
|
|
e38ec6725d | ||
|
|
3fe6dcdb92 | ||
|
|
28f6f51d77 | ||
|
|
558ecbcc5d | ||
|
|
9a7c325a8c | ||
|
|
7e42d13ac1 | ||
|
|
9c1ed06096 | ||
|
|
e1ec0529a0 | ||
|
|
f57c203de5 | ||
|
|
1ad63894f2 | ||
|
|
c452033826 | ||
|
|
37d90ec493 | ||
|
|
4158aa85f3 | ||
|
|
ec262c576f | ||
|
|
a33e2b5404 | ||
|
|
9afd315255 | ||
|
|
688cbd36bf | ||
|
|
818cf736a1 | ||
|
|
00cd1280da | ||
|
|
33719ab3e2 | ||
|
|
d9d2863e3f | ||
|
|
07577f28e8 |
@@ -10,7 +10,7 @@
|
|||||||
gtag('config', 'G-S982VZS08T', {
|
gtag('config', 'G-S982VZS08T', {
|
||||||
send_page_view: false,
|
send_page_view: false,
|
||||||
theme: localStorage.getItem('theme') || 'default',
|
theme: localStorage.getItem('theme') || 'default',
|
||||||
version: localStorage.getItem('schema_version') || '1.21.6',
|
version: localStorage.getItem('schema_version') || '26.1',
|
||||||
locale: localStorage.getItem('language') || 'en',
|
locale: localStorage.getItem('language') || 'en',
|
||||||
prefers_color_scheme: matchMedia('(prefers-color-scheme: light)').matches ? 'light' : matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'none',
|
prefers_color_scheme: matchMedia('(prefers-color-scheme: light)').matches ? 'light' : matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'none',
|
||||||
tree_view_mode: localStorage.getItem('misode_tree_view_mode') || 'default',
|
tree_view_mode: localStorage.getItem('misode_tree_view_mode') || 'default',
|
||||||
|
|||||||
1015
package-lock.json
generated
1015
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
17
package.json
17
package.json
@@ -16,20 +16,21 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@giscus/react": "^2.2.3",
|
"@giscus/react": "^2.2.3",
|
||||||
"@spyglassmc/core": "^0.4.32",
|
"@spyglassmc/core": "^0.4.43",
|
||||||
"@spyglassmc/java-edition": "^0.3.43",
|
"@spyglassmc/java-edition": "^0.3.55",
|
||||||
"@spyglassmc/json": "^0.3.36",
|
"@spyglassmc/json": "^0.3.47",
|
||||||
"@spyglassmc/locales": "^0.3.17",
|
"@spyglassmc/locales": "^0.3.22",
|
||||||
"@spyglassmc/mcdoc": "^0.3.36",
|
"@spyglassmc/mcdoc": "^0.3.47",
|
||||||
"@spyglassmc/nbt": "^0.3.37",
|
"@spyglassmc/nbt": "^0.3.49",
|
||||||
"@zip.js/zip.js": "^2.4.5",
|
"@zip.js/zip.js": "^2.4.5",
|
||||||
"brace": "^0.11.1",
|
"brace": "^0.11.1",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"deepslate": "^0.23.6",
|
"deepslate": "^0.25.1",
|
||||||
"deepslate-1.18": "npm:deepslate@0.9.0-beta.9",
|
"deepslate-1.18": "npm:deepslate@0.9.0-beta.9",
|
||||||
"deepslate-1.18.2": "npm:deepslate@0.9.0",
|
"deepslate-1.18.2": "npm:deepslate@0.9.0",
|
||||||
"deepslate-1.20.4": "npm:deepslate@0.20.1",
|
"deepslate-1.20.4": "npm:deepslate@0.20.1",
|
||||||
"diff": "^7.0.0",
|
"diff": "^8.0.4",
|
||||||
|
"dompurify": "^3.2.6",
|
||||||
"highlight.js": "^11.5.1",
|
"highlight.js": "^11.5.1",
|
||||||
"howler": "^2.2.3",
|
"howler": "^2.2.3",
|
||||||
"js-yaml": "^3.14.1",
|
"js-yaml": "^3.14.1",
|
||||||
|
|||||||
19
public/mcdoc/ad_astra.mcdoc
Normal file
19
public/mcdoc/ad_astra.mcdoc
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
dispatch minecraft:resource[ad_astra:planets] to struct AdAstraPlanet {
|
||||||
|
/// The dimension id for this planet to use
|
||||||
|
dimension: #[id="dimension"] string,
|
||||||
|
/// Due to floating point precision, the actual gravity may be slightly off in-game
|
||||||
|
gravity: float @ 0..,
|
||||||
|
/// The orbit dimension id. If left blank, this planet is treated as an orbit dimension
|
||||||
|
orbit?: #[id="dimension"] string,
|
||||||
|
oxygen: boolean,
|
||||||
|
solar_power: int @ 1..,
|
||||||
|
/// Controls where the planet will be on the selector screen
|
||||||
|
solar_system: #[id="dimension"] string,
|
||||||
|
/// Below -50 will freeze, above 70 will burn
|
||||||
|
temperature: int,
|
||||||
|
/// The minimum rocket tier required to reach this planet
|
||||||
|
tier: int @ 1..,
|
||||||
|
/// Additional dimensions that the player can launch from
|
||||||
|
additional_launch_dimensions: [#[id="dimension"] string]
|
||||||
|
}
|
||||||
@@ -1,9 +1,12 @@
|
|||||||
|
use ::java::world::component::DataComponentPatch
|
||||||
|
|
||||||
dispatch minecraft:resource[create:recipes] to struct Recipes {
|
dispatch minecraft:resource[create:recipes] to struct Recipes {
|
||||||
type: #[id] Type,
|
type: Type,
|
||||||
...create:recipes[[type]],
|
...create:recipes[[type]],
|
||||||
}
|
}
|
||||||
|
|
||||||
enum(string) Type {
|
enum(string) Type {
|
||||||
|
Compacting = "create:compacting",
|
||||||
Crushing = "create:crushing",
|
Crushing = "create:crushing",
|
||||||
Cutting = "create:cutting",
|
Cutting = "create:cutting",
|
||||||
Deploying = "create:deploying",
|
Deploying = "create:deploying",
|
||||||
@@ -25,6 +28,48 @@ struct NBT {
|
|||||||
Potion?: string,
|
Potion?: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Item = struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
|
item: string,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
id: string,
|
||||||
|
chance?: float @ 0..,
|
||||||
|
count?: int @ 1..,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
}
|
||||||
|
|
||||||
|
type ItemWithCount = struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
|
item: string,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
id: string,
|
||||||
|
count?: int @ 0..,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
}
|
||||||
|
|
||||||
|
type SimpleItem = struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
|
item: string,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
id: string,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
}
|
||||||
|
|
||||||
|
type Fluid = struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
|
fluid: string,
|
||||||
|
#[until="1.21.1"]
|
||||||
|
nbt?: NBT,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
id: string,
|
||||||
|
amount: int @ 1..,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
}
|
||||||
|
|
||||||
type ItemOrTag = (
|
type ItemOrTag = (
|
||||||
struct {
|
struct {
|
||||||
item: string,
|
item: string,
|
||||||
@@ -33,168 +78,175 @@ type ItemOrTag = (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
type FluidOrTag = (
|
type ItemOrTagWithCount = (
|
||||||
struct {
|
struct {
|
||||||
fluid: string,
|
item: string,
|
||||||
amount: int @ 1..,
|
count?: int @ 1..,
|
||||||
nbt?: NBT,
|
|
||||||
} | struct {
|
} | struct {
|
||||||
fluidTag: string,
|
tag: string,
|
||||||
amount: int @ 1..,
|
count?: int @ 1..,
|
||||||
nbt?: NBT,
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
dispatch create:recipes[create:crushing] to struct {
|
type FluidOrTag = (
|
||||||
processingTime: int @ 1..,
|
struct {
|
||||||
ingredients: [ItemOrTag] @ 1,
|
fluid: string,
|
||||||
results: [struct {
|
#[since="1.21.1"]
|
||||||
chance?: float @ 0..,
|
type: "fluid_stack",
|
||||||
|
amount: int @ 1..,
|
||||||
|
#[until="1.21.1"]
|
||||||
|
nbt?: NBT,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
} | struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
|
fluidTag: string,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
fluid_tag: string,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
type: "fluid_tag",
|
||||||
|
amount: int @ 1..,
|
||||||
|
#[until="1.21.1"]
|
||||||
|
nbt?: NBT,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
type MixingResult = struct {
|
||||||
|
id: string,
|
||||||
|
/// Used for items; optional field.
|
||||||
count?: int @ 1..,
|
count?: int @ 1..,
|
||||||
item: string,
|
/// Used for fluids; mandatory field.
|
||||||
}] @ 1..,
|
amount?: int @ 1..,
|
||||||
|
components?: DataComponentPatch,
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch create:recipes[create:compacting] to struct {
|
||||||
|
ingredients: [(ItemOrTagWithCount | FluidOrTag)] @ 1..,
|
||||||
|
results: (
|
||||||
|
#[until="1.21.1"]
|
||||||
|
[(ItemWithCount | Fluid)] @ 1.. |
|
||||||
|
#[since="1.21.1"]
|
||||||
|
[MixingResult] @ 1 |
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch create:recipes[create:crushing] to struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
|
processingTime: int @ 1..,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
processing_time: int @ 1..,
|
||||||
|
ingredients: [ItemOrTag] @ 1,
|
||||||
|
results: [Item] @ 1..,
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:cutting] to struct {
|
dispatch create:recipes[create:cutting] to struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
processingTime: int @ 1..,
|
processingTime: int @ 1..,
|
||||||
ingredients: [struct {
|
#[since="1.21.1"]
|
||||||
item?: string, // Make the user select only one
|
processing_time: int @ 1..,
|
||||||
tag?: string,
|
ingredients: [ItemOrTag] @ 1,
|
||||||
count?: int @ 1..,
|
results: [Item] @ 1,
|
||||||
}] @ 1,
|
|
||||||
results: [struct {
|
|
||||||
item: string,
|
|
||||||
count?: int @ 1..,
|
|
||||||
}] @ 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:deploying] to struct {
|
dispatch create:recipes[create:deploying] to struct {
|
||||||
/// The first object is the base item and the second object is the ingredient
|
/// The first item is the base item; the second is the ingredient to be deployed.
|
||||||
ingredients: [ItemOrTag] @ 2,
|
ingredients: [ItemOrTag] @ 2,
|
||||||
|
/// Defaults to false.
|
||||||
|
#[until="1.21.1"]
|
||||||
keepHeldItem?: boolean,
|
keepHeldItem?: boolean,
|
||||||
results: [struct {
|
/// Defaults to false.
|
||||||
item: string,
|
#[since="1.21.1"]
|
||||||
}] @ 1,
|
keep_held_item?: boolean,
|
||||||
|
results: [SimpleItem] @ 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:emptying] to struct {
|
dispatch create:recipes[create:emptying] to struct {
|
||||||
ingredients: [ItemOrTag] @ 1,
|
ingredients: [ItemOrTag] @ 1,
|
||||||
results: [struct {
|
results: [SimpleItem, Fluid],
|
||||||
item: string,
|
|
||||||
count?: int @ 1..,
|
|
||||||
}, struct {
|
|
||||||
fluid: string,
|
|
||||||
amount: int @ 1..,
|
|
||||||
}],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:filling] to struct {
|
dispatch create:recipes[create:filling] to struct {
|
||||||
ingredients: [ItemOrTag, FluidOrTag],
|
ingredients: [ItemOrTag, FluidOrTag],
|
||||||
results: [struct { item: string }] @ 1,
|
results: [SimpleItem] @ 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:haunting] to struct {
|
dispatch create:recipes[create:haunting] to struct {
|
||||||
ingredients: [ItemOrTag] @ 1,
|
ingredients: [ItemOrTag] @ 1,
|
||||||
results: [struct {
|
results: [Item] @ 1..,
|
||||||
chance?: float @ 0..,
|
|
||||||
count?: int @ 1..,
|
|
||||||
item: string,
|
|
||||||
}] @ 1..,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:item_application] to struct {
|
dispatch create:recipes[create:item_application] to struct {
|
||||||
/// The first object is the base item and the second object is the ingredient
|
/// The first item is the base item; the second is the ingredient to be applied.
|
||||||
ingredients: [ItemOrTag] @ 2,
|
ingredients: [ItemOrTag] @ 2,
|
||||||
results: [struct {
|
results: [SimpleItem] @ 1,
|
||||||
item: string,
|
|
||||||
}] @ 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:mechanical_crafting] to struct {
|
dispatch create:recipes[create:mechanical_crafting] to struct {
|
||||||
acceptMirrored?: boolean,
|
#[until="1.21.1"]
|
||||||
/// Warning: JEI will not display recipes greater in size than 9x9
|
acceptMirrored: boolean,
|
||||||
pattern: [string],
|
#[since="1.21.1"]
|
||||||
|
accept_mirrored: boolean,
|
||||||
|
/// Identifier for the category this goes in the recipe book.
|
||||||
|
#[since="1.21.1"]
|
||||||
|
category: string,
|
||||||
|
/// **Warning:** Recipes larger than 9x9 will not be displayed in JEI.
|
||||||
|
pattern: [#[crafting_ingredient(definition=true)] string],
|
||||||
key: struct {
|
key: struct {
|
||||||
[string]: ItemOrTag,
|
[#[crafting_ingredient] string]: ItemOrTag,
|
||||||
},
|
|
||||||
result: struct {
|
|
||||||
count?: int @ 1..,
|
|
||||||
item: string,
|
|
||||||
},
|
},
|
||||||
|
result: ItemWithCount,
|
||||||
|
/// Determines if a notification is shown when unlocking this recipe. Defaults to true.
|
||||||
|
#[since="1.21.1"]
|
||||||
|
show_notification?: boolean,
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:milling] to struct {
|
dispatch create:recipes[create:milling] to struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
processingTime: int @ 1..,
|
processingTime: int @ 1..,
|
||||||
|
#[since="1.21.1"]
|
||||||
|
processing_time: int @ 1..,
|
||||||
ingredients: [ItemOrTag] @ 1,
|
ingredients: [ItemOrTag] @ 1,
|
||||||
results: [struct {
|
results: [Item] @ 1..,
|
||||||
chance?: float @ 0..,
|
|
||||||
count?: int @ 1..,
|
|
||||||
item: string,
|
|
||||||
}] @ 1..,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:mixing] to struct {
|
dispatch create:recipes[create:mixing] to struct {
|
||||||
|
#[until="1.21.1"]
|
||||||
heatRequirement?: ("heated" | "superheated"),
|
heatRequirement?: ("heated" | "superheated"),
|
||||||
ingredients: [(struct {
|
#[since="1.21.1"]
|
||||||
count: int @ 1..,
|
heat_requirement?: ("heated" | "superheated"),
|
||||||
item: string,
|
ingredients: [(ItemOrTagWithCount | FluidOrTag)] @ 1..,
|
||||||
} | struct {
|
results: (
|
||||||
count: int @ 1..,
|
#[until="1.21.1"]
|
||||||
tag: string,
|
[(ItemWithCount | Fluid)] @ 1.. |
|
||||||
} | struct {
|
#[since="1.21.1"]
|
||||||
fluid: string,
|
[MixingResult] @ 1 |
|
||||||
amount: int @ 1..,
|
),
|
||||||
nbt?: NBT,
|
|
||||||
} | struct {
|
|
||||||
fluidTag: string,
|
|
||||||
amount: int @ 1..,
|
|
||||||
nbt?: NBT,
|
|
||||||
})] @ 1..,
|
|
||||||
results: [(struct {
|
|
||||||
count: int @ 1..,
|
|
||||||
item: string,
|
|
||||||
} | struct {
|
|
||||||
fluid: string,
|
|
||||||
amount: int @ 1..,
|
|
||||||
nbt?: NBT,
|
|
||||||
})] @ 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:pressing] to struct {
|
dispatch create:recipes[create:pressing] to struct {
|
||||||
ingredients: [ItemOrTag] @ 1,
|
ingredients: [ItemOrTag] @ 1..,
|
||||||
results: [struct {
|
results: [ItemWithCount] @ 1,
|
||||||
item: string,
|
|
||||||
count?: int @ 1..,
|
|
||||||
}] @ 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:sandpaper_polishing] to struct {
|
dispatch create:recipes[create:sandpaper_polishing] to struct {
|
||||||
ingredients: [ItemOrTag] @ 1,
|
ingredients: [ItemOrTag] @ 1,
|
||||||
results: [struct {
|
results: [ItemWithCount] @ 1,
|
||||||
item: string,
|
|
||||||
count?: int @ 1..,
|
|
||||||
}] @ 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:sequenced_assembly] to struct {
|
dispatch create:recipes[create:sequenced_assembly] to struct {
|
||||||
ingredient: ItemOrTag,
|
ingredient: ItemOrTag,
|
||||||
loops: int @ 1..,
|
loops: int @ 1..,
|
||||||
results: [struct {
|
results: [Item] @ 1..,
|
||||||
chance?: float @ 0..,
|
|
||||||
count?: int @ 1..,
|
|
||||||
item: string,
|
|
||||||
}],
|
|
||||||
sequence: [Recipes],
|
sequence: [Recipes],
|
||||||
transitionalItem: struct {
|
#[until="1.21.1"]
|
||||||
item: string,
|
transitionalItem: SimpleItem,
|
||||||
},
|
#[since="1.21.1"]
|
||||||
|
transitional_item: SimpleItem,
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch create:recipes[create:splashing] to struct {
|
dispatch create:recipes[create:splashing] to struct {
|
||||||
ingredients: [ItemOrTag] @ 1,
|
ingredients: [ItemOrTag] @ 1,
|
||||||
results: [struct {
|
results: [Item] @ 1..,
|
||||||
chance?: float @ 0..,
|
|
||||||
count?: int @ 1..,
|
|
||||||
item: string,
|
|
||||||
}] @ 1..,
|
|
||||||
}
|
}
|
||||||
|
|||||||
113
public/mcdoc/loot-table-modifier.mcdoc
Normal file
113
public/mcdoc/loot-table-modifier.mcdoc
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
use ::java::data::loot::LootPool
|
||||||
|
use ::java::data::loot::LootPoolEntry
|
||||||
|
use ::java::data::loot::LootContextType
|
||||||
|
use ::java::data::loot::LootCondition
|
||||||
|
|
||||||
|
dispatch minecraft:resource[loot-table-modifier:loot_modifier] to struct {
|
||||||
|
actions: [Action],
|
||||||
|
predicate: Predicate,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Action {
|
||||||
|
type: #[id] ActionType,
|
||||||
|
...loot-table-modifier:loot_modifier_action_types[[type]],
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Predicate {
|
||||||
|
type: #[id] PredicateType,
|
||||||
|
...loot-table-modifier:loot_modifier_predicate_types[[type]],
|
||||||
|
}
|
||||||
|
|
||||||
|
enum(string) ActionType {
|
||||||
|
PoolAdd = "loot-table-modifier:pool_add",
|
||||||
|
PoolRemove = "loot-table-modifier:pool_remove",
|
||||||
|
|
||||||
|
|
||||||
|
EntryAdd = "loot-table-modifier:entry_add",
|
||||||
|
EntryRemove = "loot-table-modifier:entry_remove",
|
||||||
|
|
||||||
|
EntryItemSet = "loot-table-modifier:entry_item_set",
|
||||||
|
|
||||||
|
|
||||||
|
ConditionAdd = "loot-table-modifier:condition_add"
|
||||||
|
}
|
||||||
|
|
||||||
|
enum(string) PredicateType {
|
||||||
|
Inverted = "loot-table-modifier:inverted",
|
||||||
|
AnyOf = "loot-table-modifier:any_of",
|
||||||
|
AllOf = "loot-table-modifier:all_of",
|
||||||
|
|
||||||
|
|
||||||
|
EntryItem = "loot-table-modifier:entry_item",
|
||||||
|
|
||||||
|
|
||||||
|
Table = "loot-table-modifier:table",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Utils
|
||||||
|
struct Pattern {
|
||||||
|
regexPattern: #[regex_pattern] string,
|
||||||
|
}
|
||||||
|
|
||||||
|
type LiteralOrPattern<T> = (
|
||||||
|
#[misode_member_name="Literal"] T |
|
||||||
|
#[misode_member_name="Regex pattern"] Pattern |
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
/// Actions
|
||||||
|
|
||||||
|
dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:pool_add] to struct {
|
||||||
|
pools: [LootPool],
|
||||||
|
}
|
||||||
|
dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:pool_remove] to struct {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:entry_add] to struct {
|
||||||
|
entries: [LootPoolEntry],
|
||||||
|
}
|
||||||
|
dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:entry_remove] to struct {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:entry_item_set] to struct {
|
||||||
|
name: #[id="item"] string,
|
||||||
|
canReplaceEntry?: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
dispatch loot-table-modifier:loot_modifier_action_types[loot-table-modifier:condition_add] to struct {
|
||||||
|
conditions: [LootCondition],
|
||||||
|
includePools?: boolean,
|
||||||
|
includeEntries?: boolean,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Predicates
|
||||||
|
|
||||||
|
/// # op
|
||||||
|
dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:inverted] to struct {
|
||||||
|
term: Predicate,
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:any_of] to struct {
|
||||||
|
terms: [Predicate],
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:all_of] to struct {
|
||||||
|
terms: [Predicate],
|
||||||
|
}
|
||||||
|
|
||||||
|
/// # entry
|
||||||
|
dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:entry_item] to struct {
|
||||||
|
name: LiteralOrPattern<#[id="item"] string>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// # table
|
||||||
|
dispatch loot-table-modifier:loot_modifier_predicate_types[loot-table-modifier:table] to struct {
|
||||||
|
identifiers?: [LiteralOrPattern<#[id="loot_table"] string>],
|
||||||
|
types?: [LiteralOrPattern<LootContextType>],
|
||||||
|
}
|
||||||
@@ -123,6 +123,13 @@ type DataMap<K, V> = struct {
|
|||||||
remove?: [K],
|
remove?: [K],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dispatch minecraft:resource[neoforge:data_map_acceptable_villager_distances] to DataMap<#[id(registry="entity_type", tags="allowed")] string, (
|
||||||
|
float |
|
||||||
|
struct AcceptableVillagerDistance {
|
||||||
|
acceptable_villager_distance: float,
|
||||||
|
} |
|
||||||
|
)>
|
||||||
|
|
||||||
dispatch minecraft:resource[neoforge:data_map_compostables] to DataMap<#[id(registry="item",tags="allowed")] string, (
|
dispatch minecraft:resource[neoforge:data_map_compostables] to DataMap<#[id(registry="item",tags="allowed")] string, (
|
||||||
float @ 0..1 |
|
float @ 0..1 |
|
||||||
struct Compostable {
|
struct Compostable {
|
||||||
@@ -166,6 +173,13 @@ dispatch minecraft:resource[neoforge:data_map_raid_hero_gifts] to DataMap<#[id(r
|
|||||||
} |
|
} |
|
||||||
)>
|
)>
|
||||||
|
|
||||||
|
dispatch minecraft:resource[neoforge:data_map_strippables] to DataMap<#[id(registry="block",tags="allowed")] string, (
|
||||||
|
#[id="block"] string |
|
||||||
|
struct Strippable {
|
||||||
|
stripped_block: #[id="block"] string,
|
||||||
|
} |
|
||||||
|
)>
|
||||||
|
|
||||||
dispatch minecraft:resource[neoforge:data_map_vibration_frequencies] to DataMap<#[id(registry="game_event",tags="allowed")] string, (
|
dispatch minecraft:resource[neoforge:data_map_vibration_frequencies] to DataMap<#[id(registry="game_event",tags="allowed")] string, (
|
||||||
int @ 1..15 |
|
int @ 1..15 |
|
||||||
struct VibrationFrequency {
|
struct VibrationFrequency {
|
||||||
@@ -173,6 +187,13 @@ dispatch minecraft:resource[neoforge:data_map_vibration_frequencies] to DataMap<
|
|||||||
} |
|
} |
|
||||||
)>
|
)>
|
||||||
|
|
||||||
|
dispatch minecraft:resource[neoforge:data_map_villager_types] to DataMap<#[id(registry="worldgen/biome",tags="allowed")] string, (
|
||||||
|
#[id="villager_type"] string |
|
||||||
|
struct BiomeVillagerType {
|
||||||
|
villager_type: #[id="villager_type"] string,
|
||||||
|
} |
|
||||||
|
)>
|
||||||
|
|
||||||
dispatch minecraft:resource[neoforge:data_map_waxables] to DataMap<#[id(registry="block",tags="allowed")] string, (
|
dispatch minecraft:resource[neoforge:data_map_waxables] to DataMap<#[id(registry="block",tags="allowed")] string, (
|
||||||
#[id="block"] string |
|
#[id="block"] string |
|
||||||
struct Waxable {
|
struct Waxable {
|
||||||
|
|||||||
@@ -1304,3 +1304,92 @@ dispatch minecraft:resource[pixelmon:npc_preset] to struct NPCPreset {
|
|||||||
party: SelectorType<TeamSupplier>,
|
party: SelectorType<TeamSupplier>,
|
||||||
goals: SelectorType<Goals>,
|
goals: SelectorType<Goals>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum(string) PokedexRegistrationStatus {
|
||||||
|
UNKNOWN = "UNKNOWN",
|
||||||
|
SEEN = "SEEN",
|
||||||
|
CAUGHT = "CAUGHT",
|
||||||
|
}
|
||||||
|
|
||||||
|
enum(string) Gender {
|
||||||
|
MALE = "MALE",
|
||||||
|
FEMALE = "FEMALE",
|
||||||
|
NONE = "NONE",
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch minecraft:resource[pixelmon:pokedex_trigger] to struct PokedexTrigger {
|
||||||
|
events: [#[id(registry="pixelmon:")] string],
|
||||||
|
condition: InteractionCondition,
|
||||||
|
resulting_states: [PokedexRegistrationStatus],
|
||||||
|
player_context_key: string,
|
||||||
|
pokemon_context_key: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PokemonBase {
|
||||||
|
species: int,
|
||||||
|
form: string,
|
||||||
|
gender: Gender,
|
||||||
|
palette: string
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch minecraft:resource[pixelmon:pokedex_region] to struct Region {
|
||||||
|
generation_id: int,
|
||||||
|
name: Text,
|
||||||
|
starters: [PokemonBase],
|
||||||
|
pokemon: [int],
|
||||||
|
}
|
||||||
|
|
||||||
|
enum(string) PokemonProviderType {
|
||||||
|
ALL = "pixelmon:all",
|
||||||
|
ALL_WITH_PALETTE_TAG = "pixelmon:all_with_palette_tag",
|
||||||
|
DEX = "pixelmon:dex",
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch pixelmon:pokemon_provider_type[pixelmon:all] to struct {}
|
||||||
|
|
||||||
|
dispatch pixelmon:pokemon_provider_type[pixelmon:all_with_palette_tag] to struct {
|
||||||
|
tag: string
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Dex {
|
||||||
|
dex: int,
|
||||||
|
form?: string,
|
||||||
|
palette?: string,
|
||||||
|
gender?: Gender,
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch pixelmon:pokemon_provider_type[pixelmon:dex] to struct {
|
||||||
|
dex_numbers: [Dex]
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PokemonProvider {
|
||||||
|
type: #[id] PokemonProviderType,
|
||||||
|
...pixelmon:pokemon_provider_type[[type]]
|
||||||
|
}
|
||||||
|
|
||||||
|
enum(string) PokemonPredicateType {
|
||||||
|
ANY = "pixelmon:any",
|
||||||
|
SPEC = "pixelmon:spec",
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch pixelmon:pokemon_predicate_type[pixelmon:any] to struct {}
|
||||||
|
|
||||||
|
dispatch pixelmon:pokemon_predicate_type[pixelmon:spec] to struct {
|
||||||
|
spec: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PokemonPredicate {
|
||||||
|
type: #[id] PokemonPredicateType,
|
||||||
|
...pixelmon:pokemon_predicate_type[[type]]
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch minecraft:resource[pixelmon:pokedex] to struct Pokedex {
|
||||||
|
name: Text,
|
||||||
|
/// Used to determine which order the pokedexes appear in the survival tab
|
||||||
|
priority: int,
|
||||||
|
primary_color: Color,
|
||||||
|
secondary_color: Color,
|
||||||
|
text_color: Color,
|
||||||
|
pokemon: PokemonProvider,
|
||||||
|
accetpance_test: PokemonPredicate,
|
||||||
|
}
|
||||||
@@ -252,6 +252,8 @@ function AttributeModifiersTooltip({ data }: { data: NbtTag | undefined }) {
|
|||||||
let first = true
|
let first = true
|
||||||
return modifiers.map((e) => {
|
return modifiers.map((e) => {
|
||||||
if (!e.isCompound()) return
|
if (!e.isCompound()) return
|
||||||
|
const display = e.getCompound('display').getString('type')
|
||||||
|
if (display == 'hidden') return
|
||||||
const slot = e.has('slot') ? e.getString('slot') : 'any'
|
const slot = e.has('slot') ? e.getString('slot') : 'any'
|
||||||
if (slot !== group) return
|
if (slot !== group) return
|
||||||
const wasFirst = first
|
const wasFirst = first
|
||||||
|
|||||||
@@ -8,15 +8,20 @@ import type { ListType, LiteralType, McdocType, NumericType, PrimitiveArrayType,
|
|||||||
import { handleAttributes } from '@spyglassmc/mcdoc/lib/runtime/attribute/index.js'
|
import { handleAttributes } from '@spyglassmc/mcdoc/lib/runtime/attribute/index.js'
|
||||||
import type { SimplifiedEnum, SimplifiedMcdocType, SimplifiedMcdocTypeNoUnion, SimplifiedStructType, SimplifiedStructTypePairField } from '@spyglassmc/mcdoc/lib/runtime/checker/index.js'
|
import type { SimplifiedEnum, SimplifiedMcdocType, SimplifiedMcdocTypeNoUnion, SimplifiedStructType, SimplifiedStructTypePairField } from '@spyglassmc/mcdoc/lib/runtime/checker/index.js'
|
||||||
import { getValues } from '@spyglassmc/mcdoc/lib/runtime/completer/index.js'
|
import { getValues } from '@spyglassmc/mcdoc/lib/runtime/completer/index.js'
|
||||||
import { Identifier, ItemStack } from 'deepslate'
|
import { Identifier as Identifier1204, ItemStack as ItemStack1204 } from 'deepslate-1.20.4/core'
|
||||||
|
import { Identifier, ItemStack } from 'deepslate/core'
|
||||||
|
import DOMPurify from 'dompurify'
|
||||||
import { marked } from 'marked'
|
import { marked } from 'marked'
|
||||||
import { useCallback, useEffect, useMemo, useState } from 'preact/hooks'
|
import { useCallback, useEffect, useMemo, useState } from 'preact/hooks'
|
||||||
import config from '../../Config.js'
|
import config from '../../Config.js'
|
||||||
import { useLocale } from '../../contexts/Locale.jsx'
|
import { useLocale } from '../../contexts/Locale.jsx'
|
||||||
|
import { useVersion } from '../../contexts/Version.jsx'
|
||||||
import { useFocus } from '../../hooks/useFocus.js'
|
import { useFocus } from '../../hooks/useFocus.js'
|
||||||
|
import { checkVersion } from '../../services/Versions.js'
|
||||||
import { generateColor, hexId, intToHexRgb, randomInt, randomSeed } from '../../Utils.js'
|
import { generateColor, hexId, intToHexRgb, randomInt, randomSeed } from '../../Utils.js'
|
||||||
import { Btn } from '../Btn.jsx'
|
import { Btn } from '../Btn.jsx'
|
||||||
import { ItemDisplay } from '../ItemDisplay.jsx'
|
import { ItemDisplay } from '../ItemDisplay.jsx'
|
||||||
|
import { ItemDisplay1204 } from '../ItemDisplay1204.jsx'
|
||||||
import { Octicon } from '../Octicon.jsx'
|
import { Octicon } from '../Octicon.jsx'
|
||||||
import { formatIdentifier, getCategory, getChange, getDefault, getItemType, isDefaultCollapsedType, isFixedList, isInlineTuple, isListOrArray, isNumericType, isSelectRegistry, quickEqualTypes, simplifyType } from './McdocHelpers.js'
|
import { formatIdentifier, getCategory, getChange, getDefault, getItemType, isDefaultCollapsedType, isFixedList, isInlineTuple, isListOrArray, isNumericType, isSelectRegistry, quickEqualTypes, simplifyType } from './McdocHelpers.js'
|
||||||
|
|
||||||
@@ -200,9 +205,7 @@ function StringHead({ type, optional, excludeStrings, node, ctx }: Props<StringT
|
|||||||
}, [onChangeValue])
|
}, [onChangeValue])
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
{((idRegistry === 'item' || idRegistry === 'block') && idTags !== 'implicit' && value && !value.startsWith('#')) && <label>
|
{((idRegistry === 'item' || idRegistry === 'block') && idTags !== 'implicit' && value && !value.startsWith('#')) && <ItemIdPreview id={value}/>}
|
||||||
<ItemDisplay item={new ItemStack(Identifier.parse(value), 1)} />
|
|
||||||
</label>}
|
|
||||||
{isSelect ? <>
|
{isSelect ? <>
|
||||||
<select value={value === undefined ? SPECIAL_UNSET : value} onInput={(e) => onChangeValue((e.target as HTMLInputElement).value)}>
|
<select value={value === undefined ? SPECIAL_UNSET : value} onInput={(e) => onChangeValue((e.target as HTMLInputElement).value)}>
|
||||||
{(value === undefined || optional) && <option value={SPECIAL_UNSET}>{locale('unset')}</option>}
|
{(value === undefined || optional) && <option value={SPECIAL_UNSET}>{locale('unset')}</option>}
|
||||||
@@ -225,6 +228,27 @@ function StringHead({ type, optional, excludeStrings, node, ctx }: Props<StringT
|
|||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ItemIdPreview({ id }: { id: string }) {
|
||||||
|
const { version } = useVersion()
|
||||||
|
|
||||||
|
const stack = useMemo(() => {
|
||||||
|
try {
|
||||||
|
if (!checkVersion(version, '1.20.5')) {
|
||||||
|
return new ItemStack1204(Identifier1204.parse(id), 1)
|
||||||
|
}
|
||||||
|
return new ItemStack(Identifier.parse(id), 1)
|
||||||
|
} catch (e) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
}, [id, version])
|
||||||
|
|
||||||
|
return <>{stack && <label>
|
||||||
|
{stack instanceof ItemStack1204
|
||||||
|
? <ItemDisplay1204 item={stack} />
|
||||||
|
: <ItemDisplay item={stack} />}
|
||||||
|
</label>}</>
|
||||||
|
}
|
||||||
|
|
||||||
function EnumHead({ type, optional, excludeStrings, node, ctx }: Props<SimplifiedEnum>) {
|
function EnumHead({ type, optional, excludeStrings, node, ctx }: Props<SimplifiedEnum>) {
|
||||||
const { locale } = useLocale()
|
const { locale } = useLocale()
|
||||||
|
|
||||||
@@ -408,6 +432,10 @@ function UnionHead({ type, optional, node, ctx }: Props<UnionType<SimplifiedMcdo
|
|||||||
}
|
}
|
||||||
|
|
||||||
function formatUnionMember(type: SimplifiedMcdocTypeNoUnion, others: SimplifiedMcdocTypeNoUnion[]): string {
|
function formatUnionMember(type: SimplifiedMcdocTypeNoUnion, others: SimplifiedMcdocTypeNoUnion[]): string {
|
||||||
|
const memberNameAttribute = type.attributes?.find(a => a.name === 'misode_member_name')?.value
|
||||||
|
if (memberNameAttribute?.kind === 'literal' && memberNameAttribute.value.kind === 'string') {
|
||||||
|
return memberNameAttribute.value.value
|
||||||
|
}
|
||||||
if (type.kind === 'literal') {
|
if (type.kind === 'literal') {
|
||||||
return formatIdentifier(type.value.value.toString())
|
return formatIdentifier(type.value.value.toString())
|
||||||
}
|
}
|
||||||
@@ -1185,9 +1213,16 @@ interface KeyProps {
|
|||||||
function Key({ label, doc, raw }: KeyProps) {
|
function Key({ label, doc, raw }: KeyProps) {
|
||||||
const [shown, setShown] = useFocus()
|
const [shown, setShown] = useFocus()
|
||||||
|
|
||||||
|
const cleanDoc = useMemo(() => {
|
||||||
|
if (!doc) {
|
||||||
|
return doc
|
||||||
|
}
|
||||||
|
return DOMPurify.sanitize(marked(doc), { FORBID_ATTR: ['style'] })
|
||||||
|
}, [doc])
|
||||||
|
|
||||||
return <label onClick={() => setShown(true)}>
|
return <label onClick={() => setShown(true)}>
|
||||||
<span class={doc ? `underline ${shown ? '' : 'decoration-dotted hover:decoration-solid'}` : ''}>{raw ? label.toString() : formatIdentifier(label.toString())}</span>
|
<span class={doc ? `underline ${shown ? '' : 'decoration-dotted hover:decoration-solid'}` : ''}>{raw ? label.toString() : formatIdentifier(label.toString())}</span>
|
||||||
{doc && <div class={`node-doc ${shown ? '' : 'hidden'}`} onClick={e => e.stopPropagation()} dangerouslySetInnerHTML={{ __html: marked(doc) }}></div>}
|
{cleanDoc && <div class={`node-doc ${shown ? '' : 'hidden'}`} onClick={e => e.stopPropagation()} dangerouslySetInnerHTML={{ __html: cleanDoc }}></div>}
|
||||||
</label>
|
</label>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ export class Deepslate {
|
|||||||
this.settingsCache = settings.noise
|
this.settingsCache = settings.noise
|
||||||
const randomState = new this.d.RandomState(settings, seed)
|
const randomState = new this.d.RandomState(settings, seed)
|
||||||
return randomState.router.finalDensity
|
return randomState.router.finalDensity
|
||||||
} else {
|
} else if (this.isVersion('1.18.2')) {
|
||||||
const random = this.d.XoroshiroRandom.create(seed).forkPositional()
|
const random = this.d.XoroshiroRandom.create(seed).forkPositional()
|
||||||
const settings = this.d.NoiseSettings.fromJson({
|
const settings = this.d.NoiseSettings.fromJson({
|
||||||
min_y: minY,
|
min_y: minY,
|
||||||
@@ -297,6 +297,8 @@ export class Deepslate {
|
|||||||
this.settingsCache = settings
|
this.settingsCache = settings
|
||||||
const originalFn = this.d.DensityFunction.fromJson(state)
|
const originalFn = this.d.DensityFunction.fromJson(state)
|
||||||
return originalFn.mapAll(new (this.d.NoiseRouter as any).Visitor(random, settings))
|
return originalFn.mapAll(new (this.d.NoiseRouter as any).Visitor(random, settings))
|
||||||
|
} else {
|
||||||
|
return undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -311,7 +311,9 @@ const LootFunctions: Record<string, (params: any) => LootFunction> = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
enchant_with_levels: ({ options, levels }) => (item, ctx) => {
|
enchant_with_levels: ({ options, levels }) => (item, ctx) => {
|
||||||
const allowed = getHomogeneousList(options, ctx.getEnchantmentTag)
|
const allowed = options
|
||||||
|
? getHomogeneousList(options, ctx.getEnchantmentTag)
|
||||||
|
: [...ctx.getEnchantments().keys()]
|
||||||
const selected = selectEnchantments(item, computeInt(levels, ctx), allowed, ctx)
|
const selected = selectEnchantments(item, computeInt(levels, ctx), allowed, ctx)
|
||||||
if (item.is('book')) {
|
if (item.is('book')) {
|
||||||
item.id = Identifier.create('enchanted_book')
|
item.id = Identifier.create('enchanted_book')
|
||||||
@@ -647,6 +649,12 @@ function computeInt(provider: any, ctx: LootContext): number {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
case 'sum':
|
||||||
|
let sum = 0
|
||||||
|
for (const summand of provider.summands ?? []) {
|
||||||
|
sum += computeInt(summand, ctx)
|
||||||
|
}
|
||||||
|
return sum
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -673,6 +681,12 @@ function computeFloat(provider: any, ctx: LootContext): number {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
case 'sum':
|
||||||
|
let sum = 0
|
||||||
|
for (const summand of provider.summands ?? []) {
|
||||||
|
sum += computeFloat(summand, ctx)
|
||||||
|
}
|
||||||
|
return sum
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -805,10 +819,13 @@ interface Enchant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function selectEnchantments(item: ResolvedItem, levels: number, options: string[], ctx: LootContext): Enchant[] {
|
function selectEnchantments(item: ResolvedItem, levels: number, options: string[], ctx: LootContext): Enchant[] {
|
||||||
const enchantable = item.get('enchantable', tag => tag.isCompound() ? tag.getNumber('value') : undefined)
|
let enchantable: number | undefined = 1 // Not fully correct before version 1.21.2
|
||||||
|
if (checkVersion(ctx.version, '1.21.2')) {
|
||||||
|
enchantable = item.get('enchantable', tag => tag.isCompound() ? tag.getNumber('value') : undefined)
|
||||||
if (enchantable === undefined) {
|
if (enchantable === undefined) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
}
|
||||||
let cost = levels + 1 + ctx.random.nextInt(Math.floor(enchantable / 4 + 1)) + ctx.random.nextInt(Math.floor(enchantable / 4 + 1))
|
let cost = levels + 1 + ctx.random.nextInt(Math.floor(enchantable / 4 + 1)) + ctx.random.nextInt(Math.floor(enchantable / 4 + 1))
|
||||||
const f = (ctx.random.nextFloat() + ctx.random.nextFloat() - 1) * 0.15
|
const f = (ctx.random.nextFloat() + ctx.random.nextFloat() - 1) * 0.15
|
||||||
cost = clamp(Math.round(cost + cost * f), 1, Number.MAX_SAFE_INTEGER)
|
cost = clamp(Math.round(cost + cost * f), 1, Number.MAX_SAFE_INTEGER)
|
||||||
|
|||||||
173
src/app/components/previews/Recipe.ts
Normal file
173
src/app/components/previews/Recipe.ts
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
import { Identifier, ItemStack } from 'deepslate/core'
|
||||||
|
import type { VersionId } from '../../services/Versions.js'
|
||||||
|
import { checkVersion } from '../../services/Versions.js'
|
||||||
|
import { jsonToNbt } from '../../Utils.js'
|
||||||
|
|
||||||
|
export function placeItems(version: VersionId, recipe: any, animation: number, itemTags: Map<string, any>): Map<string, ItemStack> {
|
||||||
|
const items = new Map<string, ItemStack>()
|
||||||
|
const type: string = recipe.type?.replace(/^minecraft:/, '')
|
||||||
|
if (!type || type.startsWith('crafting_special') || type === 'crafting_decorated_pot') {
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type === 'crafting_shapeless') {
|
||||||
|
const ingredients: any[] = Array.isArray(recipe.ingredients) ? recipe.ingredients : []
|
||||||
|
ingredients.forEach((ingredient, i) => {
|
||||||
|
const choices = allIngredientChoices(version, ingredient, itemTags)
|
||||||
|
if (i >= 0 && i < 9 && choices.length > 0) {
|
||||||
|
const choice = choices[(3 * i + animation) % choices.length]
|
||||||
|
items.set(`crafting.${i}`, choice)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else if (type === 'crafting_shaped') {
|
||||||
|
const keys = new Map<string, ItemStack>()
|
||||||
|
for (const [key, ingredient] of Object.entries(recipe.key ?? {})) {
|
||||||
|
const choices = allIngredientChoices(version, ingredient, itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
keys.set(key, choice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const pattern = Array.isArray(recipe.pattern) ? recipe.pattern : []
|
||||||
|
for (let row = 0; row < Math.min(3, pattern.length); row += 1) {
|
||||||
|
for (let col = 0; col < Math.min(3, pattern[row].length); col += 1) {
|
||||||
|
const key = pattern[row].split('')[col]
|
||||||
|
const choice = key === ' ' ? undefined : keys.get(key)
|
||||||
|
if (choice) {
|
||||||
|
items.set(`crafting.${row * 3 + col}`, choice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (type === 'crafting_transmute') {
|
||||||
|
const inputs = allIngredientChoices(version, recipe.input, itemTags)
|
||||||
|
if (inputs.length > 0) {
|
||||||
|
const choice = inputs[animation % inputs.length]
|
||||||
|
items.set('crafting.0', choice)
|
||||||
|
}
|
||||||
|
const materials = allIngredientChoices(version, recipe.material, itemTags)
|
||||||
|
if (materials.length > 0) {
|
||||||
|
const choice = materials[animation % materials.length]
|
||||||
|
items.set('crafting.1', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'crafting_dye') {
|
||||||
|
const target = allIngredientChoices(version, recipe.target, itemTags)
|
||||||
|
if (target.length > 0) {
|
||||||
|
const choice = target[animation % target.length]
|
||||||
|
items.set('crafting.0', choice)
|
||||||
|
}
|
||||||
|
const dye = allIngredientChoices(version, recipe.dye, itemTags)
|
||||||
|
if (dye.length > 0) {
|
||||||
|
const choice = dye[animation % dye.length]
|
||||||
|
items.set('crafting.1', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'crafting_imbue') {
|
||||||
|
const source = allIngredientChoices(version, recipe.source, itemTags)
|
||||||
|
if (source.length > 0) {
|
||||||
|
const choice = source[animation % source.length]
|
||||||
|
items.set('crafting.4', choice)
|
||||||
|
}
|
||||||
|
const material = allIngredientChoices(version, recipe.material, itemTags)
|
||||||
|
if (material.length > 0) {
|
||||||
|
const choice = material[animation % material.length]
|
||||||
|
items.set('crafting.0', choice)
|
||||||
|
items.set('crafting.1', choice)
|
||||||
|
items.set('crafting.2', choice)
|
||||||
|
items.set('crafting.3', choice)
|
||||||
|
items.set('crafting.5', choice)
|
||||||
|
items.set('crafting.6', choice)
|
||||||
|
items.set('crafting.7', choice)
|
||||||
|
items.set('crafting.8', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
|
||||||
|
const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
items.set('smelting.ingredient', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'stonecutting') {
|
||||||
|
const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
items.set('stonecutting.ingredient', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'smithing_transform' || type === 'smithing_trim') {
|
||||||
|
for (const ingredient of ['template', 'base', 'addition'] as const) {
|
||||||
|
const choices = allIngredientChoices(version, recipe[ingredient], itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
items.set(`smithing.${ingredient}`, choice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let resultSlot = 'crafting.result'
|
||||||
|
if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
|
||||||
|
resultSlot = 'smelting.result'
|
||||||
|
} else if (type === 'stonecutting') {
|
||||||
|
resultSlot = 'stonecutting.result'
|
||||||
|
} else if (type === 'smithing_transform' || type === 'smithing_trim') {
|
||||||
|
resultSlot = 'smithing.result'
|
||||||
|
}
|
||||||
|
const result = recipe.result
|
||||||
|
if (type === 'smithing_trim') {
|
||||||
|
const base = items.get('smithing.base')
|
||||||
|
if (base) {
|
||||||
|
items.set(resultSlot, base)
|
||||||
|
}
|
||||||
|
} else if (typeof result === 'string') {
|
||||||
|
items.set(resultSlot, new ItemStack(Identifier.parse(result), 1))
|
||||||
|
} else if (typeof result === 'object' && result !== null) {
|
||||||
|
const id = typeof result.id === 'string' ? result.id
|
||||||
|
: typeof result.item === 'string' ? result.item
|
||||||
|
: 'minecraft:air'
|
||||||
|
if (id !== 'minecraft:air') {
|
||||||
|
const count = typeof result.count === 'number' ? result.count : 1
|
||||||
|
const components = new Map(Object.entries(result.components ?? {})
|
||||||
|
.map(([k, v]) => [k, jsonToNbt(v)]))
|
||||||
|
items.set(resultSlot, new ItemStack(Identifier.parse(id), count, components))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
function allIngredientChoices(version: VersionId, ingredient: any, itemTags: Map<string, any>): ItemStack[] {
|
||||||
|
if (Array.isArray(ingredient)) {
|
||||||
|
return ingredient.flatMap(i => allIngredientChoices(version, i, itemTags))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkVersion(version, '1.21.2')) {
|
||||||
|
if (ingredient !== null) {
|
||||||
|
if (typeof ingredient === 'string') {
|
||||||
|
if (ingredient.startsWith('#')) {
|
||||||
|
return parseTag(version, ingredient.slice(1), itemTags)
|
||||||
|
}
|
||||||
|
return [new ItemStack(Identifier.parse(ingredient), 1)]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [new ItemStack(Identifier.create('stone'), 1)]
|
||||||
|
} else {
|
||||||
|
if (typeof ingredient === 'object' && ingredient !== null) {
|
||||||
|
if (typeof ingredient.item === 'string') {
|
||||||
|
return [new ItemStack(Identifier.parse(ingredient.item), 1)]
|
||||||
|
} else if (typeof ingredient.tag === 'string') {
|
||||||
|
return parseTag(version, ingredient.tag, itemTags)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseTag(version: VersionId, tagId: any, itemTags: Map<string, any>): ItemStack[] {
|
||||||
|
const tag: any = itemTags.get(tagId.replace(/^minecraft:/, ''))
|
||||||
|
if (typeof tag === 'object' && tag !== null && Array.isArray(tag.values)) {
|
||||||
|
return tag.values.flatMap((value: any) => {
|
||||||
|
if (typeof value !== 'string') return []
|
||||||
|
if (value.startsWith('#')) return parseTag(version, value.slice(1), itemTags)
|
||||||
|
return [new ItemStack(Identifier.parse(value), 1)]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return []
|
||||||
|
}
|
||||||
127
src/app/components/previews/Recipe1204.ts
Normal file
127
src/app/components/previews/Recipe1204.ts
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
import { Identifier, ItemStack } from 'deepslate-1.20.4/core'
|
||||||
|
import type { VersionId } from '../../services/Versions.js'
|
||||||
|
|
||||||
|
export function placeItems(version: VersionId, recipe: any, animation: number, itemTags: Map<string, any>): Map<string, ItemStack> {
|
||||||
|
const items = new Map<string, ItemStack>()
|
||||||
|
const type: string = recipe.type?.replace(/^minecraft:/, '')
|
||||||
|
if (!type || type.startsWith('crafting_special') || type === 'crafting_decorated_pot') {
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type === 'crafting_shapeless') {
|
||||||
|
const ingredients: any[] = Array.isArray(recipe.ingredients) ? recipe.ingredients : []
|
||||||
|
ingredients.forEach((ingredient, i) => {
|
||||||
|
const choices = allIngredientChoices(version, ingredient, itemTags)
|
||||||
|
if (i >= 0 && i < 9 && choices.length > 0) {
|
||||||
|
const choice = choices[(3 * i + animation) % choices.length]
|
||||||
|
items.set(`crafting.${i}`, choice)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else if (type === 'crafting_shaped') {
|
||||||
|
const keys = new Map<string, ItemStack>()
|
||||||
|
for (const [key, ingredient] of Object.entries(recipe.key ?? {})) {
|
||||||
|
const choices = allIngredientChoices(version, ingredient, itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
keys.set(key, choice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const pattern = Array.isArray(recipe.pattern) ? recipe.pattern : []
|
||||||
|
for (let row = 0; row < Math.min(3, pattern.length); row += 1) {
|
||||||
|
for (let col = 0; col < Math.min(3, pattern[row].length); col += 1) {
|
||||||
|
const key = pattern[row].split('')[col]
|
||||||
|
const choice = key === ' ' ? undefined : keys.get(key)
|
||||||
|
if (choice) {
|
||||||
|
items.set(`crafting.${row * 3 + col}`, choice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (type === 'crafting_transmute') {
|
||||||
|
const inputs = allIngredientChoices(version, recipe.input, itemTags)
|
||||||
|
if (inputs.length > 0) {
|
||||||
|
const choice = inputs[animation % inputs.length]
|
||||||
|
items.set('crafting.0', choice)
|
||||||
|
}
|
||||||
|
const materials = allIngredientChoices(version, recipe.material, itemTags)
|
||||||
|
if (materials.length > 0) {
|
||||||
|
const choice = materials[animation % materials.length]
|
||||||
|
items.set('crafting.1', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
|
||||||
|
const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
items.set('smelting.ingredient', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'stonecutting') {
|
||||||
|
const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
items.set('stonecutting.ingredient', choice)
|
||||||
|
}
|
||||||
|
} else if (type === 'smithing_transform' || type === 'smithing_trim') {
|
||||||
|
for (const ingredient of ['template', 'base', 'addition'] as const) {
|
||||||
|
const choices = allIngredientChoices(version, recipe[ingredient], itemTags)
|
||||||
|
if (choices.length > 0) {
|
||||||
|
const choice = choices[animation % choices.length]
|
||||||
|
items.set(`smithing.${ingredient}`, choice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let resultSlot = 'crafting.result'
|
||||||
|
if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
|
||||||
|
resultSlot = 'smelting.result'
|
||||||
|
} else if (type === 'stonecutting') {
|
||||||
|
resultSlot = 'stonecutting.result'
|
||||||
|
} else if (type === 'smithing_transform' || type === 'smithing_trim') {
|
||||||
|
resultSlot = 'smithing.result'
|
||||||
|
}
|
||||||
|
const result = recipe.result
|
||||||
|
if (type === 'smithing_trim') {
|
||||||
|
const base = items.get('smithing.base')
|
||||||
|
if (base) {
|
||||||
|
items.set(resultSlot, base)
|
||||||
|
}
|
||||||
|
} else if (typeof result === 'string') {
|
||||||
|
items.set(resultSlot, new ItemStack(Identifier.parse(result), 1))
|
||||||
|
} else if (typeof result === 'object' && result !== null) {
|
||||||
|
const id = typeof result.id === 'string' ? result.id
|
||||||
|
: typeof result.item === 'string' ? result.item
|
||||||
|
: 'minecraft:air'
|
||||||
|
if (id !== 'minecraft:air') {
|
||||||
|
const count = typeof result.count === 'number' ? result.count : 1
|
||||||
|
items.set(resultSlot, new ItemStack(Identifier.parse(id), count))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
function allIngredientChoices(version: VersionId, ingredient: any, itemTags: Map<string, any>): ItemStack[] {
|
||||||
|
if (Array.isArray(ingredient)) {
|
||||||
|
return ingredient.flatMap(i => allIngredientChoices(version, i, itemTags))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof ingredient === 'object' && ingredient !== null) {
|
||||||
|
if (typeof ingredient.item === 'string') {
|
||||||
|
return [new ItemStack(Identifier.parse(ingredient.item), 1)]
|
||||||
|
} else if (typeof ingredient.tag === 'string') {
|
||||||
|
return parseTag(version, ingredient.tag, itemTags)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseTag(version: VersionId, tagId: any, itemTags: Map<string, any>): ItemStack[] {
|
||||||
|
const tag: any = itemTags.get(tagId.replace(/^minecraft:/, ''))
|
||||||
|
if (typeof tag === 'object' && tag !== null && Array.isArray(tag.values)) {
|
||||||
|
return tag.values.flatMap((value: any) => {
|
||||||
|
if (typeof value !== 'string') return []
|
||||||
|
if (value.startsWith('#')) return parseTag(version, value.slice(1), itemTags)
|
||||||
|
return [new ItemStack(Identifier.parse(value), 1)]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return []
|
||||||
|
}
|
||||||
@@ -1,19 +1,21 @@
|
|||||||
import { Identifier, ItemStack } from 'deepslate'
|
|
||||||
import { useEffect, useMemo, useRef, useState } from 'preact/hooks'
|
import { useEffect, useMemo, useRef, useState } from 'preact/hooks'
|
||||||
import { useLocale, useVersion } from '../../contexts/index.js'
|
import { useLocale, useVersion } from '../../contexts/index.js'
|
||||||
import { useAsync } from '../../hooks/useAsync.js'
|
import { useAsync } from '../../hooks/useAsync.js'
|
||||||
import type { VersionId } from '../../services/index.js'
|
|
||||||
import { checkVersion, fetchAllPresets } from '../../services/index.js'
|
import { checkVersion, fetchAllPresets } from '../../services/index.js'
|
||||||
import { jsonToNbt, safeJsonParse } from '../../Utils.js'
|
import { safeJsonParse } from '../../Utils.js'
|
||||||
import { Btn, BtnMenu } from '../index.js'
|
import { Btn, BtnMenu } from '../index.js'
|
||||||
import { ItemDisplay } from '../ItemDisplay.jsx'
|
import { ItemDisplay } from '../ItemDisplay.jsx'
|
||||||
|
import { ItemDisplay1204 } from '../ItemDisplay1204.jsx'
|
||||||
import type { PreviewProps } from './index.js'
|
import type { PreviewProps } from './index.js'
|
||||||
|
import { placeItems } from './Recipe.js'
|
||||||
|
import { placeItems as placeItems1204 } from './Recipe1204.js'
|
||||||
|
|
||||||
const ANIMATION_TIME = 1000
|
const ANIMATION_TIME = 1000
|
||||||
|
|
||||||
export const RecipePreview = ({ docAndNode }: PreviewProps) => {
|
export const RecipePreview = ({ docAndNode }: PreviewProps) => {
|
||||||
const { locale } = useLocale()
|
const { locale } = useLocale()
|
||||||
const { version } = useVersion()
|
const { version } = useVersion()
|
||||||
|
const use1204 = !checkVersion(version, '1.20.5')
|
||||||
const [advancedTooltips, setAdvancedTooltips] = useState(true)
|
const [advancedTooltips, setAdvancedTooltips] = useState(true)
|
||||||
const [animation, setAnimation] = useState(0)
|
const [animation, setAnimation] = useState(0)
|
||||||
const overlay = useRef<HTMLDivElement>(null)
|
const overlay = useRef<HTMLDivElement>(null)
|
||||||
@@ -31,9 +33,12 @@ export const RecipePreview = ({ docAndNode }: PreviewProps) => {
|
|||||||
|
|
||||||
const text = docAndNode.doc.getText()
|
const text = docAndNode.doc.getText()
|
||||||
const recipe = safeJsonParse(text) ?? {}
|
const recipe = safeJsonParse(text) ?? {}
|
||||||
const items = useMemo<Map<Slot, ItemStack>>(() => {
|
const items = useMemo(() => {
|
||||||
|
if (use1204) {
|
||||||
|
return placeItems1204(version, recipe, animation, itemTags ?? new Map())
|
||||||
|
}
|
||||||
return placeItems(version, recipe, animation, itemTags ?? new Map())
|
return placeItems(version, recipe, animation, itemTags ?? new Map())
|
||||||
}, [text, animation, itemTags])
|
}, [use1204, text, animation, itemTags])
|
||||||
|
|
||||||
const gui = useMemo(() => {
|
const gui = useMemo(() => {
|
||||||
const type = recipe?.type?.replace(/^minecraft:/, '')
|
const type = recipe?.type?.replace(/^minecraft:/, '')
|
||||||
@@ -53,7 +58,9 @@ export const RecipePreview = ({ docAndNode }: PreviewProps) => {
|
|||||||
<img src={gui} alt="Crafting GUI" class="pixelated" draggable={false} />
|
<img src={gui} alt="Crafting GUI" class="pixelated" draggable={false} />
|
||||||
{[...items.entries()].map(([slot, item]) =>
|
{[...items.entries()].map(([slot, item]) =>
|
||||||
<div key={slot} style={slotStyle(slot)}>
|
<div key={slot} style={slotStyle(slot)}>
|
||||||
<ItemDisplay item={item} slotDecoration={true} advancedTooltip={advancedTooltips} />
|
{use1204
|
||||||
|
? <ItemDisplay1204 item={item as any} slotDecoration={true} advancedTooltip={advancedTooltips} />
|
||||||
|
: <ItemDisplay item={item as any} slotDecoration={true} advancedTooltip={advancedTooltips} />}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -68,7 +75,7 @@ export const RecipePreview = ({ docAndNode }: PreviewProps) => {
|
|||||||
const GUI_WIDTH = 176
|
const GUI_WIDTH = 176
|
||||||
const GUI_HEIGHT = 81
|
const GUI_HEIGHT = 81
|
||||||
const SLOT_SIZE = 18
|
const SLOT_SIZE = 18
|
||||||
const SLOTS = {
|
const SLOTS: Record<string, [number, number]> = {
|
||||||
'crafting.0': [29, 16],
|
'crafting.0': [29, 16],
|
||||||
'crafting.1': [47, 16],
|
'crafting.1': [47, 16],
|
||||||
'crafting.2': [65, 16],
|
'crafting.2': [65, 16],
|
||||||
@@ -89,10 +96,9 @@ const SLOTS = {
|
|||||||
'smithing.addition': [43, 47],
|
'smithing.addition': [43, 47],
|
||||||
'smithing.result': [97, 47],
|
'smithing.result': [97, 47],
|
||||||
}
|
}
|
||||||
type Slot = keyof typeof SLOTS
|
|
||||||
|
|
||||||
function slotStyle(slot: Slot) {
|
function slotStyle(slot: string) {
|
||||||
const [x, y] = SLOTS[slot]
|
const [x, y] = SLOTS[slot] ?? [0, 0]
|
||||||
return {
|
return {
|
||||||
left: `${x*100/GUI_WIDTH}%`,
|
left: `${x*100/GUI_WIDTH}%`,
|
||||||
top: `${y*100/GUI_HEIGHT}%`,
|
top: `${y*100/GUI_HEIGHT}%`,
|
||||||
@@ -100,143 +106,3 @@ function slotStyle(slot: Slot) {
|
|||||||
height: `${SLOT_SIZE*100/GUI_HEIGHT}%`,
|
height: `${SLOT_SIZE*100/GUI_HEIGHT}%`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function placeItems(version: VersionId, recipe: any, animation: number, itemTags: Map<string, any>) {
|
|
||||||
const items = new Map<Slot, ItemStack>()
|
|
||||||
const type: string = recipe.type?.replace(/^minecraft:/, '')
|
|
||||||
if (!type || type.startsWith('crafting_special') || type === 'crafting_decorated_pot') {
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type === 'crafting_shapeless') {
|
|
||||||
const ingredients: any[] = Array.isArray(recipe.ingredients) ? recipe.ingredients : []
|
|
||||||
ingredients.forEach((ingredient, i) => {
|
|
||||||
const choices = allIngredientChoices(version, ingredient, itemTags)
|
|
||||||
if (i >= 0 && i < 9 && choices.length > 0) {
|
|
||||||
const choice = choices[(3 * i + animation) % choices.length]
|
|
||||||
items.set(`crafting.${i}` as Slot, choice)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else if (type === 'crafting_shaped') {
|
|
||||||
const keys = new Map<string, ItemStack>()
|
|
||||||
for (const [key, ingredient] of Object.entries(recipe.key ?? {})) {
|
|
||||||
const choices = allIngredientChoices(version, ingredient, itemTags)
|
|
||||||
if (choices.length > 0) {
|
|
||||||
const choice = choices[animation % choices.length]
|
|
||||||
keys.set(key, choice)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const pattern = Array.isArray(recipe.pattern) ? recipe.pattern : []
|
|
||||||
for (let row = 0; row < Math.min(3, pattern.length); row += 1) {
|
|
||||||
for (let col = 0; col < Math.min(3, pattern[row].length); col += 1) {
|
|
||||||
const key = pattern[row].split('')[col]
|
|
||||||
const choice = key === ' ' ? undefined : keys.get(key)
|
|
||||||
if (choice) {
|
|
||||||
items.set(`crafting.${row * 3 + col}` as Slot, choice)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (type === 'crafting_transmute') {
|
|
||||||
const inputs = allIngredientChoices(version, recipe.input, itemTags)
|
|
||||||
if (inputs.length > 0) {
|
|
||||||
const choice = inputs[animation % inputs.length]
|
|
||||||
items.set('crafting.0', choice)
|
|
||||||
}
|
|
||||||
const materials = allIngredientChoices(version, recipe.material, itemTags)
|
|
||||||
if (materials.length > 0) {
|
|
||||||
const choice = materials[animation % materials.length]
|
|
||||||
items.set('crafting.1', choice)
|
|
||||||
}
|
|
||||||
} else if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
|
|
||||||
const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
|
|
||||||
if (choices.length > 0) {
|
|
||||||
const choice = choices[animation % choices.length]
|
|
||||||
items.set('smelting.ingredient' as Slot, choice)
|
|
||||||
}
|
|
||||||
} else if (type === 'stonecutting') {
|
|
||||||
const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
|
|
||||||
if (choices.length > 0) {
|
|
||||||
const choice = choices[animation % choices.length]
|
|
||||||
items.set('stonecutting.ingredient' as Slot, choice)
|
|
||||||
}
|
|
||||||
} else if (type === 'smithing_transform' || type === 'smithing_trim') {
|
|
||||||
for (const ingredient of ['template', 'base', 'addition'] as const) {
|
|
||||||
const choices = allIngredientChoices(version, recipe[ingredient], itemTags)
|
|
||||||
if (choices.length > 0) {
|
|
||||||
const choice = choices[animation % choices.length]
|
|
||||||
items.set(`smithing.${ingredient}`, choice)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let resultSlot: Slot = 'crafting.result'
|
|
||||||
if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
|
|
||||||
resultSlot = 'smelting.result'
|
|
||||||
} else if (type === 'stonecutting') {
|
|
||||||
resultSlot = 'stonecutting.result'
|
|
||||||
} else if (type === 'smithing_transform' || type === 'smithing_trim') {
|
|
||||||
resultSlot = 'smithing.result'
|
|
||||||
}
|
|
||||||
const result = recipe.result
|
|
||||||
if (type === 'smithing_trim') {
|
|
||||||
const base = items.get('smithing.base')
|
|
||||||
if (base) {
|
|
||||||
items.set(resultSlot, base)
|
|
||||||
}
|
|
||||||
} else if (typeof result === 'string') {
|
|
||||||
items.set(resultSlot, new ItemStack(Identifier.parse(result), 1))
|
|
||||||
} else if (typeof result === 'object' && result !== null) {
|
|
||||||
const id = typeof result.id === 'string' ? result.id
|
|
||||||
: typeof result.item === 'string' ? result.item
|
|
||||||
: 'minecraft:air'
|
|
||||||
if (id !== 'minecraft:air') {
|
|
||||||
const count = typeof result.count === 'number' ? result.count : 1
|
|
||||||
const components = new Map(Object.entries(result.components ?? {})
|
|
||||||
.map(([k, v]) => [k, jsonToNbt(v)]))
|
|
||||||
items.set(resultSlot, new ItemStack(Identifier.parse(id), count, components))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
|
|
||||||
function allIngredientChoices(version: VersionId, ingredient: any, itemTags: Map<string, any>): ItemStack[] {
|
|
||||||
if (Array.isArray(ingredient)) {
|
|
||||||
return ingredient.flatMap(i => allIngredientChoices(version, i, itemTags))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (checkVersion(version, '1.21.2')) {
|
|
||||||
if (ingredient !== null) {
|
|
||||||
if (typeof ingredient === 'string') {
|
|
||||||
if (ingredient.startsWith('#')) {
|
|
||||||
return parseTag(version, ingredient.slice(1), itemTags)
|
|
||||||
}
|
|
||||||
return [new ItemStack(Identifier.parse(ingredient), 1)]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return [new ItemStack(Identifier.create('stone'), 1)]
|
|
||||||
} else {
|
|
||||||
if (typeof ingredient === 'object' && ingredient !== null) {
|
|
||||||
if (typeof ingredient.item === 'string') {
|
|
||||||
return [new ItemStack(Identifier.parse(ingredient.item), 1)]
|
|
||||||
} else if (typeof ingredient.tag === 'string') {
|
|
||||||
return parseTag(version, ingredient.tag, itemTags)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseTag(version: VersionId, tagId: any, itemTags: Map<string, any>): ItemStack[] {
|
|
||||||
const tag: any = itemTags.get(tagId.replace(/^minecraft:/, ''))
|
|
||||||
if (typeof tag === 'object' && tag !== null && Array.isArray(tag.values)) {
|
|
||||||
return tag.values.flatMap((value: any) => {
|
|
||||||
if (typeof value !== 'string') return []
|
|
||||||
if (value.startsWith('#')) return parseTag(version, value.slice(1), itemTags)
|
|
||||||
return [new ItemStack(Identifier.parse(value), 1)]
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
import type { Bugfix } from '../../services/DataFetcher.js'
|
|
||||||
import { Badge } from '../Badge.jsx'
|
|
||||||
import { Card } from '../Card.jsx'
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
fix: Bugfix
|
|
||||||
}
|
|
||||||
export function Issue({ fix }: Props) {
|
|
||||||
return <Card overlay={fix.id} link={`https://mojira.dev/${fix.id}`}>
|
|
||||||
<div class="changelog-content">{fix.summary}</div>
|
|
||||||
<div class="badges-list">
|
|
||||||
{fix.categories.map(c => <Badge label={c} />)}
|
|
||||||
</div>
|
|
||||||
</Card>
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
import { useLocale } from '../../contexts/Locale.jsx'
|
|
||||||
import { useAsync } from '../../hooks/useAsync.js'
|
|
||||||
import { fetchBugfixes } from '../../services/DataFetcher.js'
|
|
||||||
import { Issue } from './Issue.jsx'
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
version: string
|
|
||||||
}
|
|
||||||
export function IssueList({ version }: Props) {
|
|
||||||
const { locale } = useLocale()
|
|
||||||
const { value: issues, loading } = useAsync(() => fetchBugfixes(version), [version])
|
|
||||||
|
|
||||||
return <div class="card-column">
|
|
||||||
{issues === undefined || loading ? <>
|
|
||||||
<span class="note">{locale('loading')}</span>
|
|
||||||
</> : issues.length === 0 ? <>
|
|
||||||
<span class="note">{locale('versions.fixes.no_results')}</span>
|
|
||||||
</> : <>
|
|
||||||
{issues?.map(issue => <Issue key={issue.id} fix={issue} />)}
|
|
||||||
</>}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
@@ -4,11 +4,11 @@ import { useLocale } from '../../contexts/index.js'
|
|||||||
import { useAsync } from '../../hooks/useAsync.js'
|
import { useAsync } from '../../hooks/useAsync.js'
|
||||||
import { useSearchParam } from '../../hooks/useSearchParam.js'
|
import { useSearchParam } from '../../hooks/useSearchParam.js'
|
||||||
import type { VersionMeta } from '../../services/index.js'
|
import type { VersionMeta } from '../../services/index.js'
|
||||||
import { fetchChangelogs, getArticleLink } from '../../services/index.js'
|
import { fetchChangelogs } from '../../services/index.js'
|
||||||
import { Octicon } from '../Octicon.js'
|
import { Octicon } from '../Octicon.js'
|
||||||
import { ChangelogList, IssueList, VersionDiff, VersionMetaData } from './index.js'
|
import { ChangelogList, VersionDiff, VersionMetaData } from './index.js'
|
||||||
|
|
||||||
const Tabs = ['changelog', 'diff', 'fixes']
|
const Tabs = ['changelog', 'diff']
|
||||||
const WIKI_PAGE_PREFIX = 'https://minecraft.wiki/w/Java_Edition_'
|
const WIKI_PAGE_PREFIX = 'https://minecraft.wiki/w/Java_Edition_'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -31,6 +31,7 @@ export function VersionDetail({ id, version }: Props) {
|
|||||||
changes?.filter(c => c.version === id || (c.group === id && !c.tags.includes('obsolete'))),
|
changes?.filter(c => c.version === id || (c.group === id && !c.tags.includes('obsolete'))),
|
||||||
[id, changes])
|
[id, changes])
|
||||||
|
|
||||||
|
const fixesLink = version && getFixesLink(version.id)
|
||||||
const articleLink = version && getArticleLink(version.id)
|
const articleLink = version && getArticleLink(version.id)
|
||||||
const wikiPageLink = version && WIKI_PAGE_PREFIX + version.name
|
const wikiPageLink = version && WIKI_PAGE_PREFIX + version.name
|
||||||
|
|
||||||
@@ -55,6 +56,10 @@ export function VersionDetail({ id, version }: Props) {
|
|||||||
{Tabs.map(t => <Link key={t} class={tab === t ? 'selected' : ''} href={`/versions/?id=${id}&tab=${t}`}>
|
{Tabs.map(t => <Link key={t} class={tab === t ? 'selected' : ''} href={`/versions/?id=${id}&tab=${t}`}>
|
||||||
{locale(`versions.${t}`)}
|
{locale(`versions.${t}`)}
|
||||||
</Link>)}
|
</Link>)}
|
||||||
|
<a href={fixesLink} target="_blank">
|
||||||
|
{locale('versions.fixes')}
|
||||||
|
{Octicon.link_external}
|
||||||
|
</a>
|
||||||
{articleLink && <a href={articleLink} target="_blank">
|
{articleLink && <a href={articleLink} target="_blank">
|
||||||
{locale('versions.article')}
|
{locale('versions.article')}
|
||||||
{Octicon.link_external}
|
{Octicon.link_external}
|
||||||
@@ -67,7 +72,6 @@ export function VersionDetail({ id, version }: Props) {
|
|||||||
<div class="version-tab">
|
<div class="version-tab">
|
||||||
{tab === 'changelog' && <ChangelogList changes={filteredChangelogs} defaultOrder="asc" />}
|
{tab === 'changelog' && <ChangelogList changes={filteredChangelogs} defaultOrder="asc" />}
|
||||||
{tab === 'diff' && <VersionDiff version={id} />}
|
{tab === 'diff' && <VersionDiff version={id} />}
|
||||||
{tab === 'fixes' && <IssueList version={id} />}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
@@ -76,3 +80,96 @@ export function VersionDetail({ id, version }: Props) {
|
|||||||
export function releaseDate(version: VersionMeta) {
|
export function releaseDate(version: VersionMeta) {
|
||||||
return new Date(version.release_time).toLocaleDateString(undefined, { day: 'numeric', month: 'short', year: 'numeric' })
|
return new Date(version.release_time).toLocaleDateString(undefined, { day: 'numeric', month: 'short', year: 'numeric' })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FIXES_PREFIX = 'https://mojira.dev/?project=MC&resolution=Fixed&fix_version='
|
||||||
|
|
||||||
|
function getFixesLink(version: string) {
|
||||||
|
let match
|
||||||
|
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-snapshot-(\d+)$/)) && match[1] && match[2]) {
|
||||||
|
return FIXES_PREFIX + encodeURIComponent(`${match[1]} Snapshot ${match[2]}`)
|
||||||
|
}
|
||||||
|
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-pre-?(\d+)$/)) && match[1] && match[2]) {
|
||||||
|
return FIXES_PREFIX + encodeURIComponent(`${match[1]} Pre-Release ${match[2]}`)
|
||||||
|
}
|
||||||
|
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-rc-?(\d+)$/)) && match[1]) {
|
||||||
|
return FIXES_PREFIX + encodeURIComponent(`${match[1]} Release Candidate ${match[2]}`)
|
||||||
|
}
|
||||||
|
return FIXES_PREFIX + encodeURIComponent(version)
|
||||||
|
}
|
||||||
|
|
||||||
|
const ARTICLE_PREFIX = 'https://www.minecraft.net/article/'
|
||||||
|
const ARTICLE_OVERRIDES = new Map(Object.entries({
|
||||||
|
'1.16-pre2': 'minecraft-1-16-pre-release-1',
|
||||||
|
'1.16-pre4': 'minecraft-1-16-pre-release-3',
|
||||||
|
'1.16-pre5': 'minecraft-1-16-pre-release-3',
|
||||||
|
'1.16-pre7': 'minecraft-1-16-pre-release-6',
|
||||||
|
'1.16-pre8': 'minecraft-1-16-pre-release-6',
|
||||||
|
'1.16-rc1': 'minecraft-1-16-release-candidate',
|
||||||
|
'1.16': 'nether-update-java',
|
||||||
|
'1.16.2-pre3': 'minecraft-1-16-2-pre-release-2',
|
||||||
|
'1.16.2-rc1': 'minecraft-1-16-2-pre-release-2',
|
||||||
|
'1.16.2-rc2': 'minecraft-1-16-2-pre-release-2',
|
||||||
|
'1.17-pre3': 'minecraft-1-17-pre-release-2',
|
||||||
|
'1.17-pre4': 'minecraft-1-17-pre-release-2',
|
||||||
|
'1.17-pre5': 'minecraft-1-17-pre-release-2',
|
||||||
|
'1.17.1-pre3': 'minecraft-1-17-1-pre-release-2',
|
||||||
|
'1.17-rc2': 'minecraft-1-17-release-candidate-1',
|
||||||
|
'1.17': 'caves---cliffs--part-i-out-today-java',
|
||||||
|
'1.17.1-rc2': 'minecraft-1-17-1-release-candidate-1',
|
||||||
|
'1.18-pre3': 'minecraft-1-18-pre-release-2',
|
||||||
|
'1.18-pre4': 'minecraft-1-18-pre-release-2',
|
||||||
|
'1.18-pre5': 'minecraft-1-18-pre-release-2',
|
||||||
|
'1.18-pre7': 'minecraft-1-18-pre-release-6',
|
||||||
|
'1.18-pre8': 'minecraft-1-18-pre-release-6',
|
||||||
|
'1.18-rc2': 'minecraft-1-18-release-candidate-1',
|
||||||
|
'1.18-rc3': 'minecraft-1-18-release-candidate-1',
|
||||||
|
'1.18-rc4': 'minecraft-1-18-release-candidate-1',
|
||||||
|
'1.18': 'caves---cliffs--part-ii-out-today-java',
|
||||||
|
'1.18.1-rc2': 'minecraft-1-18-1-release-candidate-1',
|
||||||
|
'1.18.1-rc3': 'minecraft-1-18-1-release-candidate-1',
|
||||||
|
'1.18.2-pre3': 'minecraft-1-18-2-pre-release-2',
|
||||||
|
'1.18.2-pre5': 'minecraft-1-18-2-pre-release-4',
|
||||||
|
'1.19-pre3': 'minecraft-1-19-pre-release-2',
|
||||||
|
'1.19-pre5': 'minecraft-1-19-pre-release-4',
|
||||||
|
'1.19-rc2': 'minecraft-1-19-release-candidate-1',
|
||||||
|
'1.19': 'the-wild-update-out-today-java',
|
||||||
|
'1.19.1-pre4': 'minecraft-1-19-1-pre-release-3',
|
||||||
|
'1.19.2-rc2': 'minecraft-1-19-2-release-candidate-1',
|
||||||
|
'1.19.3-pre2': 'minecraft-1-19-3-pre-release-1',
|
||||||
|
'1.19.3-rc2': 'minecraft-1-19-3-release-candidate-1',
|
||||||
|
'1.19.4-pre3': 'minecraft-1-19-4-pre-release-2',
|
||||||
|
'1.19.4-rc2': 'minecraft-1-19-4-release-candidate-1',
|
||||||
|
'1.20-pre3': 'minecraft-1-20-pre-release-2',
|
||||||
|
'1.20-pre4': 'minecraft-1-20-pre-release-2',
|
||||||
|
'1.20-pre6': 'minecraft-1-20-pre-release-5',
|
||||||
|
'1.20': 'trails-tales-update-out-today-java',
|
||||||
|
'1.20.1': 'minecraft--java-edition-1-20-1',
|
||||||
|
'1.20.2-pre2': 'minecraft-1-20-2-pre-release-1',
|
||||||
|
'23w43b': 'minecraft-snapshot-23w43b',
|
||||||
|
'24w03b': 'minecraft-snapshot-24w03b',
|
||||||
|
'24w05b': 'minecraft-snapshot-24w05b',
|
||||||
|
}))
|
||||||
|
|
||||||
|
function getArticleLink(version: string): string | undefined {
|
||||||
|
const override = ARTICLE_OVERRIDES.get(version)
|
||||||
|
if (override) {
|
||||||
|
return ARTICLE_PREFIX + override
|
||||||
|
}
|
||||||
|
let match
|
||||||
|
if ((match = version.match(/^(\d\dw\d\d)[a-z]$/)) && match[1]) {
|
||||||
|
return ARTICLE_PREFIX + 'minecraft-snapshot-' + match[1] + 'a'
|
||||||
|
}
|
||||||
|
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-snapshot-(\d+)$/)) && match[1] && match[2]) {
|
||||||
|
return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-snapshot-' + match[2]
|
||||||
|
}
|
||||||
|
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-pre-?(\d+)$/)) && match[1] && match[2]) {
|
||||||
|
return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-pre-release-' + match[2]
|
||||||
|
}
|
||||||
|
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-rc-?(\d+)$/)) && match[1]) {
|
||||||
|
return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-release-candidate-' + match[2]
|
||||||
|
}
|
||||||
|
if (version.match(/^\d+\.\d+(\.\d+)?$/)) {
|
||||||
|
return ARTICLE_PREFIX + 'minecraft-java-edition-' + version.replaceAll('.', '-')
|
||||||
|
}
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
export * from '../Badge.jsx'
|
export * from '../Badge.jsx'
|
||||||
export * from './ChangelogEntry.js'
|
export * from './ChangelogEntry.js'
|
||||||
export * from './ChangelogList.js'
|
export * from './ChangelogList.js'
|
||||||
export * from './IssueList.jsx'
|
|
||||||
export * from './VersionDetail.js'
|
export * from './VersionDetail.js'
|
||||||
export * from './VersionDiff.jsx'
|
export * from './VersionDiff.jsx'
|
||||||
export * from './VersionEntry.js'
|
export * from './VersionEntry.js'
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { getCurrentUrl, route } from 'preact-router'
|
import { getCurrentUrl, route } from 'preact-router'
|
||||||
import { useMemo } from 'preact/hooks'
|
import { useMemo } from 'preact/hooks'
|
||||||
import config from '../Config.js'
|
|
||||||
import { getGenerator } from '../Utils.js'
|
|
||||||
import { SchemaGenerator } from '../components/generator/SchemaGenerator.jsx'
|
import { SchemaGenerator } from '../components/generator/SchemaGenerator.jsx'
|
||||||
import { ErrorPanel, Octicon } from '../components/index.js'
|
import { ErrorPanel, Octicon } from '../components/index.js'
|
||||||
|
import config from '../Config.js'
|
||||||
import { useLocale, useTitle, useVersion } from '../contexts/index.js'
|
import { useLocale, useTitle, useVersion } from '../contexts/index.js'
|
||||||
import type { VersionId } from '../services/index.js'
|
import type { VersionId } from '../services/index.js'
|
||||||
import { checkVersion } from '../services/index.js'
|
import { checkVersion } from '../services/index.js'
|
||||||
|
import { getGenerator } from '../Utils.js'
|
||||||
|
|
||||||
export const SHARE_KEY = 'share'
|
export const SHARE_KEY = 'share'
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ export function Generator({}: Props) {
|
|||||||
|
|
||||||
const gen = getGenerator(getCurrentUrl())
|
const gen = getGenerator(getCurrentUrl())
|
||||||
if (!gen) {
|
if (!gen) {
|
||||||
return <main><ErrorPanel error={locale('generator.not_found', getCurrentUrl())} /></main>
|
return <main><ErrorPanel error={locale('generator.not_found', getCurrentUrl())} reportable={false} /></main>
|
||||||
}
|
}
|
||||||
|
|
||||||
const allowedVersions = useMemo(() => {
|
const allowedVersions = useMemo(() => {
|
||||||
|
|||||||
@@ -336,35 +336,35 @@ class MeshRenderer extends Renderer {
|
|||||||
|
|
||||||
this.mesh = new Mesh([
|
this.mesh = new Mesh([
|
||||||
new Quad( // E
|
new Quad( // E
|
||||||
new Vertex(new Vector(1, 0, 0), [0, 0, 0], [0.25, 0.50], undefined, undefined),
|
new Vertex(new Vector(1, 0, 0), [0, 0, 0], [0.25, 0.50], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 1, 0), [0, 0, 0], [0.25, 0.25], undefined, undefined),
|
new Vertex(new Vector(1, 1, 0), [0, 0, 0], [0.25, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 1, 1), [0, 0, 0], [0.00, 0.25], undefined, undefined),
|
new Vertex(new Vector(1, 1, 1), [0, 0, 0], [0.00, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 0, 1), [0, 0, 0], [0.00, 0.50], undefined, undefined)),
|
new Vertex(new Vector(1, 0, 1), [0, 0, 0], [0.00, 0.50], [0, 0, 0, 0], undefined, undefined)),
|
||||||
new Quad( // W
|
new Quad( // W
|
||||||
new Vertex(new Vector(0, 0, 1), [0, 0, 0], [0.75, 0.50], undefined, undefined),
|
new Vertex(new Vector(0, 0, 1), [0, 0, 0], [0.75, 0.50], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 1, 1), [0, 0, 0], [0.75, 0.25], undefined, undefined),
|
new Vertex(new Vector(0, 1, 1), [0, 0, 0], [0.75, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 1, 0), [0, 0, 0], [0.50, 0.25], undefined, undefined),
|
new Vertex(new Vector(0, 1, 0), [0, 0, 0], [0.50, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 0, 0), [0, 0, 0], [0.50, 0.50], undefined, undefined)),
|
new Vertex(new Vector(0, 0, 0), [0, 0, 0], [0.50, 0.50], [0, 0, 0, 0], undefined, undefined)),
|
||||||
new Quad( // U
|
new Quad( // U
|
||||||
new Vertex(new Vector(0, 1, 1), [0, 0, 0], [0.25, 0.25], undefined, undefined),
|
new Vertex(new Vector(0, 1, 1), [0, 0, 0], [0.25, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 1, 1), [0, 0, 0], [0.50, 0.25], undefined, undefined),
|
new Vertex(new Vector(1, 1, 1), [0, 0, 0], [0.50, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 1, 0), [0, 0, 0], [0.50, 0.00], undefined, undefined),
|
new Vertex(new Vector(1, 1, 0), [0, 0, 0], [0.50, 0.00], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 1, 0), [0, 0, 0], [0.25, 0.00], undefined, undefined)),
|
new Vertex(new Vector(0, 1, 0), [0, 0, 0], [0.25, 0.00], [0, 0, 0, 0], undefined, undefined)),
|
||||||
new Quad( // D
|
new Quad( // D
|
||||||
new Vertex(new Vector(0, 0, 0), [0, 0, 0], [0.50, 0.25], undefined, undefined),
|
new Vertex(new Vector(0, 0, 0), [0, 0, 0], [0.50, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 0, 0), [0, 0, 0], [0.75, 0.25], undefined, undefined),
|
new Vertex(new Vector(1, 0, 0), [0, 0, 0], [0.75, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 0, 1), [0, 0, 0], [0.75, 0.00], undefined, undefined),
|
new Vertex(new Vector(1, 0, 1), [0, 0, 0], [0.75, 0.00], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 0, 1), [0, 0, 0], [0.50, 0.00], undefined, undefined)),
|
new Vertex(new Vector(0, 0, 1), [0, 0, 0], [0.50, 0.00], [0, 0, 0, 0], undefined, undefined)),
|
||||||
new Quad( // S
|
new Quad( // S
|
||||||
new Vertex(new Vector(0, 0, 1), [0, 0, 0], [0.25, 0.50], undefined, undefined),
|
new Vertex(new Vector(0, 0, 1), [0, 0, 0], [0.25, 0.50], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 0, 1), [0, 0, 0], [0.50, 0.50], undefined, undefined),
|
new Vertex(new Vector(1, 0, 1), [0, 0, 0], [0.50, 0.50], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 1, 1), [0, 0, 0], [0.50, 0.25], undefined, undefined),
|
new Vertex(new Vector(1, 1, 1), [0, 0, 0], [0.50, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 1, 1), [0, 0, 0], [0.25, 0.25], undefined, undefined)),
|
new Vertex(new Vector(0, 1, 1), [0, 0, 0], [0.25, 0.25], [0, 0, 0, 0], undefined, undefined)),
|
||||||
new Quad( // N
|
new Quad( // N
|
||||||
new Vertex(new Vector(0, 1, 0), [0, 0, 0], [0.75, 0.50], undefined, undefined),
|
new Vertex(new Vector(0, 1, 0), [0, 0, 0], [0.75, 0.50], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 1, 0), [0, 0, 0], [1.00, 0.50], undefined, undefined),
|
new Vertex(new Vector(1, 1, 0), [0, 0, 0], [1.00, 0.50], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(1, 0, 0), [0, 0, 0], [1.00, 0.25], undefined, undefined),
|
new Vertex(new Vector(1, 0, 0), [0, 0, 0], [1.00, 0.25], [0, 0, 0, 0], undefined, undefined),
|
||||||
new Vertex(new Vector(0, 0, 0), [0, 0, 0], [0.75, 0.25], undefined, undefined)),
|
new Vertex(new Vector(0, 0, 0), [0, 0, 0], [0.75, 0.25], [0, 0, 0, 0], undefined, undefined)),
|
||||||
])
|
])
|
||||||
for (const q of this.mesh.quads) {
|
for (const q of this.mesh.quads) {
|
||||||
const normal = q.normal()
|
const normal = q.normal()
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
const ARTICLE_PREFIX = 'https://www.minecraft.net/article/'
|
|
||||||
|
|
||||||
const ARTICLE_OVERRIDES = new Map(Object.entries({
|
|
||||||
'1.16-pre2': 'minecraft-1-16-pre-release-1',
|
|
||||||
'1.16-pre4': 'minecraft-1-16-pre-release-3',
|
|
||||||
'1.16-pre5': 'minecraft-1-16-pre-release-3',
|
|
||||||
'1.16-pre7': 'minecraft-1-16-pre-release-6',
|
|
||||||
'1.16-pre8': 'minecraft-1-16-pre-release-6',
|
|
||||||
'1.16-rc1': 'minecraft-1-16-release-candidate',
|
|
||||||
'1.16': 'nether-update-java',
|
|
||||||
'1.16.2-pre3': 'minecraft-1-16-2-pre-release-2',
|
|
||||||
'1.16.2-rc1': 'minecraft-1-16-2-pre-release-2',
|
|
||||||
'1.16.2-rc2': 'minecraft-1-16-2-pre-release-2',
|
|
||||||
'1.17-pre3': 'minecraft-1-17-pre-release-2',
|
|
||||||
'1.17-pre4': 'minecraft-1-17-pre-release-2',
|
|
||||||
'1.17-pre5': 'minecraft-1-17-pre-release-2',
|
|
||||||
'1.17.1-pre3': 'minecraft-1-17-1-pre-release-2',
|
|
||||||
'1.17-rc2': 'minecraft-1-17-release-candidate-1',
|
|
||||||
'1.17': 'caves---cliffs--part-i-out-today-java',
|
|
||||||
'1.17.1-rc2': 'minecraft-1-17-1-release-candidate-1',
|
|
||||||
'1.18-pre3': 'minecraft-1-18-pre-release-2',
|
|
||||||
'1.18-pre4': 'minecraft-1-18-pre-release-2',
|
|
||||||
'1.18-pre5': 'minecraft-1-18-pre-release-2',
|
|
||||||
'1.18-pre7': 'minecraft-1-18-pre-release-6',
|
|
||||||
'1.18-pre8': 'minecraft-1-18-pre-release-6',
|
|
||||||
'1.18-rc2': 'minecraft-1-18-release-candidate-1',
|
|
||||||
'1.18-rc3': 'minecraft-1-18-release-candidate-1',
|
|
||||||
'1.18-rc4': 'minecraft-1-18-release-candidate-1',
|
|
||||||
'1.18': 'caves---cliffs--part-ii-out-today-java',
|
|
||||||
'1.18.1-rc2': 'minecraft-1-18-1-release-candidate-1',
|
|
||||||
'1.18.1-rc3': 'minecraft-1-18-1-release-candidate-1',
|
|
||||||
'1.18.2-pre3': 'minecraft-1-18-2-pre-release-2',
|
|
||||||
'1.18.2-pre5': 'minecraft-1-18-2-pre-release-4',
|
|
||||||
'1.19-pre3': 'minecraft-1-19-pre-release-2',
|
|
||||||
'1.19-pre5': 'minecraft-1-19-pre-release-4',
|
|
||||||
'1.19-rc2': 'minecraft-1-19-release-candidate-1',
|
|
||||||
'1.19': 'the-wild-update-out-today-java',
|
|
||||||
'1.19.1-pre4': 'minecraft-1-19-1-pre-release-3',
|
|
||||||
'1.19.2-rc2': 'minecraft-1-19-2-release-candidate-1',
|
|
||||||
'1.19.3-pre2': 'minecraft-1-19-3-pre-release-1',
|
|
||||||
'1.19.3-rc2': 'minecraft-1-19-3-release-candidate-1',
|
|
||||||
'1.19.4-pre3': 'minecraft-1-19-4-pre-release-2',
|
|
||||||
'1.19.4-rc2': 'minecraft-1-19-4-release-candidate-1',
|
|
||||||
'1.20-pre3': 'minecraft-1-20-pre-release-2',
|
|
||||||
'1.20-pre4': 'minecraft-1-20-pre-release-2',
|
|
||||||
'1.20-pre6': 'minecraft-1-20-pre-release-5',
|
|
||||||
'1.20': 'trails-tales-update-out-today-java',
|
|
||||||
'1.20.1': 'minecraft--java-edition-1-20-1',
|
|
||||||
'1.20.2-pre2': 'minecraft-1-20-2-pre-release-1',
|
|
||||||
'23w43b': 'minecraft-snapshot-23w43b',
|
|
||||||
'24w03b': 'minecraft-snapshot-24w03b',
|
|
||||||
'24w05b': 'minecraft-snapshot-24w05b',
|
|
||||||
}))
|
|
||||||
|
|
||||||
export function getArticleLink(version: string): string | undefined {
|
|
||||||
const override = ARTICLE_OVERRIDES.get(version)
|
|
||||||
if (override) {
|
|
||||||
return ARTICLE_PREFIX + override
|
|
||||||
}
|
|
||||||
let match
|
|
||||||
if ((match = version.match(/^(\d\dw\d\d)[a-z]$/)) && match[1]) {
|
|
||||||
return ARTICLE_PREFIX + 'minecraft-snapshot-' + match[1] + 'a'
|
|
||||||
}
|
|
||||||
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-pre([0-9]+)$/)) && match[1] && match[2]) {
|
|
||||||
return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-pre-release-' + match[2]
|
|
||||||
}
|
|
||||||
if ((match = version.match(/^(\d+\.\d+(?:\.\d+)?)-rc([0-9]+)$/)) && match[1]) {
|
|
||||||
return ARTICLE_PREFIX + 'minecraft-' + match[1].replaceAll('.', '-') + '-release-candidate-' + match[2]
|
|
||||||
}
|
|
||||||
if (version.match(/^\d+\.\d+(\.\d+)?$/)) {
|
|
||||||
return ARTICLE_PREFIX + 'minecraft-java-edition-' + version.replaceAll('.', '-')
|
|
||||||
}
|
|
||||||
return undefined
|
|
||||||
}
|
|
||||||
@@ -14,7 +14,6 @@ const mcmetaUrl = 'https://raw.githubusercontent.com/misode/mcmeta'
|
|||||||
const mcmetaTarballUrl = 'https://github.com/misode/mcmeta/tarball'
|
const mcmetaTarballUrl = 'https://github.com/misode/mcmeta/tarball'
|
||||||
const vanillaMcdocUrl = 'https://raw.githubusercontent.com/SpyglassMC/vanilla-mcdoc'
|
const vanillaMcdocUrl = 'https://raw.githubusercontent.com/SpyglassMC/vanilla-mcdoc'
|
||||||
const changesUrl = 'https://raw.githubusercontent.com/misode/technical-changes'
|
const changesUrl = 'https://raw.githubusercontent.com/misode/technical-changes'
|
||||||
const fixesUrl = 'https://raw.githubusercontent.com/misode/mcfixes'
|
|
||||||
const versionDiffUrl = 'https://mcmeta-diff.misode.workers.dev'
|
const versionDiffUrl = 'https://mcmeta-diff.misode.workers.dev'
|
||||||
const whatsNewUrl = 'https://whats-new.misode.workers.dev'
|
const whatsNewUrl = 'https://whats-new.misode.workers.dev'
|
||||||
|
|
||||||
@@ -309,31 +308,6 @@ export async function fetchChangelogs(): Promise<Change[]> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Bugfix {
|
|
||||||
id: string,
|
|
||||||
summary: string,
|
|
||||||
labels: string[],
|
|
||||||
status: string,
|
|
||||||
confirmation_status: string,
|
|
||||||
categories: string[],
|
|
||||||
priority: string,
|
|
||||||
fix_versions: string[],
|
|
||||||
creation_date: string,
|
|
||||||
resolution_date: string,
|
|
||||||
updated_date: string,
|
|
||||||
watches: number,
|
|
||||||
votes: number,
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function fetchBugfixes(version: string): Promise<Bugfix[]> {
|
|
||||||
try {
|
|
||||||
const fixes = await cachedFetch<Bugfix[]>(`${fixesUrl}/main/versions/${version}.json`, { refresh: true })
|
|
||||||
return fixes
|
|
||||||
} catch (e) {
|
|
||||||
throw new Error(`Error occured while fetching bugfixes for version ${version}: ${message(e)}`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GitHubCommitFile {
|
export interface GitHubCommitFile {
|
||||||
sha: string,
|
sha: string,
|
||||||
filename: string,
|
filename: string,
|
||||||
|
|||||||
@@ -377,7 +377,7 @@ const initialize: core.ProjectInitializer = async (ctx) => {
|
|||||||
const uri: string = new core.Uri('downloads/misode-mcdoc.tar.gz', cacheRoot).toString()
|
const uri: string = new core.Uri('downloads/misode-mcdoc.tar.gz', cacheRoot).toString()
|
||||||
const buffer = await compressBall([['builtin.mcdoc', builtinMcdoc]])
|
const buffer = await compressBall([['builtin.mcdoc', builtinMcdoc]])
|
||||||
await core.fileUtil.writeFile(externals, uri, buffer)
|
await core.fileUtil.writeFile(externals, uri, buffer)
|
||||||
return { uri }
|
return { type: 'tarball-file', uri }
|
||||||
})
|
})
|
||||||
|
|
||||||
meta.registerUriBinder(je.binder.uriBinder)
|
meta.registerUriBinder(je.binder.uriBinder)
|
||||||
@@ -420,20 +420,12 @@ const initialize: core.ProjectInitializer = async (ctx) => {
|
|||||||
// Duplicate these from spyglass for now, until they are exported separately
|
// Duplicate these from spyglass for now, until they are exported separately
|
||||||
function registerAttributes(meta: core.MetaRegistry, release: ReleaseVersion, versions: VersionMeta[]) {
|
function registerAttributes(meta: core.MetaRegistry, release: ReleaseVersion, versions: VersionMeta[]) {
|
||||||
mcdoc.runtime.registerAttribute(meta, 'since', mcdoc.runtime.attribute.validator.string, {
|
mcdoc.runtime.registerAttribute(meta, 'since', mcdoc.runtime.attribute.validator.string, {
|
||||||
filterElement: (config, ctx) => {
|
filterElement: (config, _) => {
|
||||||
if (!config.startsWith('1.')) {
|
|
||||||
ctx.logger.warn(`Invalid mcdoc attribute for "since": ${config}`)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return ReleaseVersion.cmp(release, config as ReleaseVersion) >= 0
|
return ReleaseVersion.cmp(release, config as ReleaseVersion) >= 0
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
mcdoc.runtime.registerAttribute(meta, 'until', mcdoc.runtime.attribute.validator.string, {
|
mcdoc.runtime.registerAttribute(meta, 'until', mcdoc.runtime.attribute.validator.string, {
|
||||||
filterElement: (config, ctx) => {
|
filterElement: (config, _) => {
|
||||||
if (!config.startsWith('1.')) {
|
|
||||||
ctx.logger.warn(`Invalid mcdoc attribute for "until": ${config}`)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return ReleaseVersion.cmp(release, config as ReleaseVersion) < 0
|
return ReleaseVersion.cmp(release, config as ReleaseVersion) < 0
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -442,14 +434,10 @@ function registerAttributes(meta: core.MetaRegistry, release: ReleaseVersion, ve
|
|||||||
'deprecated',
|
'deprecated',
|
||||||
mcdoc.runtime.attribute.validator.optional(mcdoc.runtime.attribute.validator.string),
|
mcdoc.runtime.attribute.validator.optional(mcdoc.runtime.attribute.validator.string),
|
||||||
{
|
{
|
||||||
mapField: (config, field, ctx) => {
|
mapField: (config, field, _) => {
|
||||||
if (config === undefined) {
|
if (config === undefined) {
|
||||||
return { ...field, deprecated: true }
|
return { ...field, deprecated: true }
|
||||||
}
|
}
|
||||||
if (!config.startsWith('1.')) {
|
|
||||||
ctx.logger.warn(`Invalid mcdoc attribute for "deprecated": ${config}`)
|
|
||||||
return field
|
|
||||||
}
|
|
||||||
if (ReleaseVersion.cmp(release, config as ReleaseVersion) >= 0) {
|
if (ReleaseVersion.cmp(release, config as ReleaseVersion) >= 0) {
|
||||||
return { ...field, deprecated: true }
|
return { ...field, deprecated: true }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import config from '../Config.js'
|
import config from '../Config.js'
|
||||||
|
|
||||||
export const VersionIds = ['1.15', '1.16', '1.17', '1.18', '1.18.2', '1.19', '1.19.3', '1.19.4', '1.20', '1.20.2', '1.20.3', '1.20.5', '1.21', '1.21.2', '1.21.4', '1.21.5', '1.21.6', '1.21.9'] as const
|
export const VersionIds = ['1.15', '1.16', '1.17', '1.18', '1.18.2', '1.19', '1.19.3', '1.19.4', '1.20', '1.20.2', '1.20.3', '1.20.5', '1.21', '1.21.2', '1.21.4', '1.21.5', '1.21.6', '1.21.9', '1.21.11', '26.1', '26.2'] as const
|
||||||
export type VersionId = typeof VersionIds[number]
|
export type VersionId = typeof VersionIds[number]
|
||||||
|
|
||||||
export const DEFAULT_VERSION: VersionId = '1.21.6'
|
export const DEFAULT_VERSION: VersionId = '26.1'
|
||||||
|
|
||||||
export function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {
|
export function checkVersion(versionId: string, minVersionId: string | undefined, maxVersionId?: string) {
|
||||||
const version = config.versions.findIndex(v => v.id === versionId)
|
const version = config.versions.findIndex(v => v.id === versionId)
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
export * from './Article.js'
|
|
||||||
export * from './DataFetcher.js'
|
export * from './DataFetcher.js'
|
||||||
export * from './Sharing.js'
|
export * from './Sharing.js'
|
||||||
export * from './Source.js'
|
export * from './Source.js'
|
||||||
|
|||||||
223
src/config.json
223
src/config.json
@@ -191,16 +191,37 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "1.21.6",
|
"id": "1.21.6",
|
||||||
"ref": "1.21.7",
|
"ref": "1.21.8",
|
||||||
"name": "1.21.6 — 1.21.8",
|
"name": "1.21.6 — 1.21.8",
|
||||||
"pack_format": 81,
|
"pack_format": 81,
|
||||||
"show": true
|
"show": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "1.21.9",
|
"id": "1.21.9",
|
||||||
|
"ref": "1.21.10",
|
||||||
|
"name": "1.21.9 — 1.21.10",
|
||||||
|
"pack_format": 88,
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1.21.11",
|
||||||
|
"ref": "1.21.11",
|
||||||
|
"name": "1.21.11",
|
||||||
|
"pack_format": 94,
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "26.1",
|
||||||
|
"ref": "26.1.1",
|
||||||
|
"name": "26.1",
|
||||||
|
"pack_format": 101,
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "26.2",
|
||||||
"dynamic": true,
|
"dynamic": true,
|
||||||
"name": "1.21.9",
|
"name": "26.2",
|
||||||
"pack_format": 83,
|
"pack_format": 102,
|
||||||
"show": true
|
"show": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -224,12 +245,12 @@
|
|||||||
{
|
{
|
||||||
"id": "advancement",
|
"id": "advancement",
|
||||||
"url": "advancement",
|
"url": "advancement",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_advancement"
|
"wiki": "https://minecraft.wiki/w/Advancement_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "recipe",
|
"id": "recipe",
|
||||||
"url": "recipe",
|
"url": "recipe",
|
||||||
"wiki": "https://minecraft.wiki/w/Recipe#JSON_format"
|
"wiki": "https://minecraft.wiki/w/Recipe_(Java_Edition)#JSON_format"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "chat_type",
|
"id": "chat_type",
|
||||||
@@ -257,7 +278,7 @@
|
|||||||
"id": "banner_pattern",
|
"id": "banner_pattern",
|
||||||
"url": "banner-pattern",
|
"url": "banner-pattern",
|
||||||
"minVersion": "1.20.5",
|
"minVersion": "1.20.5",
|
||||||
"wiki": "https://minecraft.wiki/w/Banner/Patterns#JSON_Format"
|
"wiki": "https://minecraft.wiki/w/Banner_pattern_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "wolf_variant",
|
"id": "wolf_variant",
|
||||||
@@ -274,7 +295,7 @@
|
|||||||
"id": "enchantment",
|
"id": "enchantment",
|
||||||
"url": "enchantment",
|
"url": "enchantment",
|
||||||
"minVersion": "1.21",
|
"minVersion": "1.21",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_enchantment"
|
"wiki": "https://minecraft.wiki/w/Enchantment_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "enchantment_provider",
|
"id": "enchantment_provider",
|
||||||
@@ -286,7 +307,7 @@
|
|||||||
"id": "painting_variant",
|
"id": "painting_variant",
|
||||||
"url": "painting-variant",
|
"url": "painting-variant",
|
||||||
"minVersion": "1.21",
|
"minVersion": "1.21",
|
||||||
"wiki": "https://minecraft.wiki/w/Painting_variant"
|
"wiki": "https://minecraft.wiki/w/Painting_variant_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "jukebox_song",
|
"id": "jukebox_song",
|
||||||
@@ -354,23 +375,46 @@
|
|||||||
"minVersion": "1.21.5",
|
"minVersion": "1.21.5",
|
||||||
"wiki": "https://minecraft.wiki/w/Test_environment_definition"
|
"wiki": "https://minecraft.wiki/w/Test_environment_definition"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "timeline",
|
||||||
|
"url": "timeline",
|
||||||
|
"minVersion": "1.21.11",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Timeline"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "zombie_nautilus_variant",
|
||||||
|
"url": "zombie-nautilus-variant",
|
||||||
|
"minVersion": "1.21.11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "villager_trade",
|
||||||
|
"url": "villager-trade",
|
||||||
|
"minVersion": "26.1",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Villager_trade_definition"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "trade_set",
|
||||||
|
"url": "trade-set",
|
||||||
|
"minVersion": "26.1",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Trade_set"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "text_component",
|
"id": "text_component",
|
||||||
"url": "text-component",
|
"url": "text-component",
|
||||||
"noPath": true,
|
"noPath": true,
|
||||||
"wiki": "https://minecraft.wiki/w/Raw_JSON_text_format#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Text_component_format#Java_Edition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pack_mcmeta",
|
"id": "pack_mcmeta",
|
||||||
"url": "pack-mcmeta",
|
"url": "pack-mcmeta",
|
||||||
"wiki": "https://minecraft.wiki/w/Data_pack#pack.mcmeta"
|
"wiki": "https://minecraft.wiki/w/pack.mcmeta"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "dimension",
|
"id": "dimension",
|
||||||
"url": "dimension",
|
"url": "dimension",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.16",
|
"minVersion": "1.16",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_dimension"
|
"wiki": "https://minecraft.wiki/w/Dimension_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "dimension_type",
|
"id": "dimension_type",
|
||||||
@@ -384,14 +428,14 @@
|
|||||||
"url": "worldgen/biome",
|
"url": "worldgen/biome",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.16",
|
"minVersion": "1.16",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_biome"
|
"wiki": "https://minecraft.wiki/w/Biome_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "worldgen/configured_carver",
|
"id": "worldgen/configured_carver",
|
||||||
"url": "worldgen/carver",
|
"url": "worldgen/carver",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.16",
|
"minVersion": "1.16",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_carver"
|
"wiki": "https://minecraft.wiki/w/Carver_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "worldgen/configured_feature",
|
"id": "worldgen/configured_feature",
|
||||||
@@ -426,7 +470,7 @@
|
|||||||
"url": "worldgen/noise-settings",
|
"url": "worldgen/noise-settings",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.16",
|
"minVersion": "1.16",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_noise_settings"
|
"wiki": "https://minecraft.wiki/w/Noise_settings"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "worldgen/configured_structure_feature",
|
"id": "worldgen/configured_structure_feature",
|
||||||
@@ -440,7 +484,7 @@
|
|||||||
"url": "worldgen/structure",
|
"url": "worldgen/structure",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_structure"
|
"wiki": "https://minecraft.wiki/w/Structure_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "worldgen/structure_set",
|
"id": "worldgen/structure_set",
|
||||||
@@ -476,14 +520,14 @@
|
|||||||
"url": "worldgen/world-preset",
|
"url": "worldgen/world-preset",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_world_preset"
|
"wiki": "https://minecraft.wiki/w/World_preset_definition"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "worldgen/flat_level_generator_preset",
|
"id": "worldgen/flat_level_generator_preset",
|
||||||
"url": "worldgen/flat-world-preset",
|
"url": "worldgen/flat-world-preset",
|
||||||
"tags": ["worldgen"],
|
"tags": ["worldgen"],
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Custom_world_preset#Superflat_Level_Generation_Preset"
|
"wiki": "https://minecraft.wiki/w/World_preset_definition#Superflat_Level_Generation_Preset"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "world",
|
"id": "world",
|
||||||
@@ -499,21 +543,21 @@
|
|||||||
"url": "tags/block",
|
"url": "tags/block",
|
||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/block",
|
"path": "tags/block",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/entity_type",
|
"id": "tag/entity_type",
|
||||||
"url": "tags/entity-type",
|
"url": "tags/entity-type",
|
||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/entity_type",
|
"path": "tags/entity_type",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/fluid",
|
"id": "tag/fluid",
|
||||||
"url": "tags/fluid",
|
"url": "tags/fluid",
|
||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/fluid",
|
"path": "tags/fluid",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/game_event",
|
"id": "tag/game_event",
|
||||||
@@ -521,14 +565,14 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/game_event",
|
"path": "tags/game_event",
|
||||||
"minVersion": "1.17",
|
"minVersion": "1.17",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/item",
|
"id": "tag/item",
|
||||||
"url": "tags/item",
|
"url": "tags/item",
|
||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/item",
|
"path": "tags/item",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/damage_type",
|
"id": "tag/damage_type",
|
||||||
@@ -536,7 +580,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/damage_type",
|
"path": "tags/damage_type",
|
||||||
"minVersion": "1.19.4",
|
"minVersion": "1.19.4",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/dialog",
|
"id": "tag/dialog",
|
||||||
@@ -544,7 +588,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/dialog",
|
"path": "tags/dialog",
|
||||||
"minVersion": "1.21.6",
|
"minVersion": "1.21.6",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/worldgen/biome",
|
"id": "tag/worldgen/biome",
|
||||||
@@ -552,7 +596,7 @@
|
|||||||
"tags": ["tags", "worldgen"],
|
"tags": ["tags", "worldgen"],
|
||||||
"path": "tags/worldgen/biome",
|
"path": "tags/worldgen/biome",
|
||||||
"minVersion": "1.18.2",
|
"minVersion": "1.18.2",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/worldgen/structure",
|
"id": "tag/worldgen/structure",
|
||||||
@@ -560,7 +604,7 @@
|
|||||||
"tags": ["tags", "worldgen"],
|
"tags": ["tags", "worldgen"],
|
||||||
"path": "tags/worldgen/structure",
|
"path": "tags/worldgen/structure",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/worldgen/structure_set",
|
"id": "tag/worldgen/structure_set",
|
||||||
@@ -568,7 +612,7 @@
|
|||||||
"tags": ["tags", "worldgen"],
|
"tags": ["tags", "worldgen"],
|
||||||
"path": "tags/worldgen/structure_set",
|
"path": "tags/worldgen/structure_set",
|
||||||
"minVersion": "1.18.2",
|
"minVersion": "1.18.2",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/worldgen/flat_level_generator_preset",
|
"id": "tag/worldgen/flat_level_generator_preset",
|
||||||
@@ -576,7 +620,7 @@
|
|||||||
"tags": ["tags", "worldgen"],
|
"tags": ["tags", "worldgen"],
|
||||||
"path": "tags/worldgen/flat_level_generator_preset",
|
"path": "tags/worldgen/flat_level_generator_preset",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/worldgen/world_preset",
|
"id": "tag/worldgen/world_preset",
|
||||||
@@ -584,7 +628,7 @@
|
|||||||
"tags": ["tags", "worldgen"],
|
"tags": ["tags", "worldgen"],
|
||||||
"path": "tags/worldgen/world_preset",
|
"path": "tags/worldgen/world_preset",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/banner_pattern",
|
"id": "tag/banner_pattern",
|
||||||
@@ -592,7 +636,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/banner_pattern",
|
"path": "tags/banner_pattern",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/cat_variant",
|
"id": "tag/cat_variant",
|
||||||
@@ -600,7 +644,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/cat_variant",
|
"path": "tags/cat_variant",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/enchantment",
|
"id": "tag/enchantment",
|
||||||
@@ -608,7 +652,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/enchantment",
|
"path": "tags/enchantment",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/instrument",
|
"id": "tag/instrument",
|
||||||
@@ -616,7 +660,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/instrument",
|
"path": "tags/instrument",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/painting_variant",
|
"id": "tag/painting_variant",
|
||||||
@@ -624,7 +668,7 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/painting_variant",
|
"path": "tags/painting_variant",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tag/point_of_interest_type",
|
"id": "tag/point_of_interest_type",
|
||||||
@@ -632,7 +676,39 @@
|
|||||||
"tags": ["tags"],
|
"tags": ["tags"],
|
||||||
"path": "tags/point_of_interest_type",
|
"path": "tags/point_of_interest_type",
|
||||||
"minVersion": "1.19",
|
"minVersion": "1.19",
|
||||||
"wiki": "https://minecraft.wiki/w/Tag#Java_Edition"
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tag/timeline",
|
||||||
|
"url": "tags/timeline",
|
||||||
|
"tags": ["tags"],
|
||||||
|
"path": "tags/timeline",
|
||||||
|
"minVersion": "1.21.11",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tag/zombie_nautilus_variant",
|
||||||
|
"url": "tags/zombie-nautilus-variant",
|
||||||
|
"tags": ["tags"],
|
||||||
|
"path": "tags/zombie_nautilus_variant",
|
||||||
|
"minVersion": "1.21.11",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tag/villager_trade",
|
||||||
|
"url": "tags/villager-trade",
|
||||||
|
"tags": ["tags"],
|
||||||
|
"path": "tags/villager_trade",
|
||||||
|
"minVersion": "26.1",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tag/trade_set",
|
||||||
|
"url": "tags/trade-set",
|
||||||
|
"tags": ["tags"],
|
||||||
|
"path": "tags/trade_set",
|
||||||
|
"minVersion": "26.1",
|
||||||
|
"wiki": "https://minecraft.wiki/w/Tag_(Java_Edition)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "block_definition",
|
"id": "block_definition",
|
||||||
@@ -671,7 +747,7 @@
|
|||||||
"path": "equipment",
|
"path": "equipment",
|
||||||
"tags": ["assets"],
|
"tags": ["assets"],
|
||||||
"minVersion": "1.21.4",
|
"minVersion": "1.21.4",
|
||||||
"wiki": "https://minecraft.wiki/w/Model#Equipment_models"
|
"wiki": "https://minecraft.wiki/w/Equipment"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "lang",
|
"id": "lang",
|
||||||
@@ -686,7 +762,7 @@
|
|||||||
"path": "font",
|
"path": "font",
|
||||||
"tags": ["assets"],
|
"tags": ["assets"],
|
||||||
"minVersion": "1.16",
|
"minVersion": "1.16",
|
||||||
"wiki": "https://minecraft.wiki/w/Resource_pack#Fonts"
|
"wiki": "https://minecraft.wiki/w/Font#Providers"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "atlas",
|
"id": "atlas",
|
||||||
@@ -694,7 +770,7 @@
|
|||||||
"path": "atlases",
|
"path": "atlases",
|
||||||
"tags": ["assets"],
|
"tags": ["assets"],
|
||||||
"minVersion": "1.19.3",
|
"minVersion": "1.19.3",
|
||||||
"wiki": "https://minecraft.wiki/w/Resource_pack#Atlases"
|
"wiki": "https://minecraft.wiki/w/Atlas"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "post_effect",
|
"id": "post_effect",
|
||||||
@@ -704,6 +780,16 @@
|
|||||||
"minVersion": "1.21.2",
|
"minVersion": "1.21.2",
|
||||||
"wiki": "https://minecraft.wiki/w/Shader#Post-processing_effects"
|
"wiki": "https://minecraft.wiki/w/Shader#Post-processing_effects"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "ad_astra:planets",
|
||||||
|
"url": "ad-astra/planets",
|
||||||
|
"path": "planets",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "ad_astra",
|
||||||
|
"minVersion": "1.20",
|
||||||
|
"maxVersion": "1.20.3",
|
||||||
|
"wiki": "https://ad-astra.terrarium.wiki/datapack.html"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "fabric:fabric_mod_json",
|
"id": "fabric:fabric_mod_json",
|
||||||
"url": "fabric/fabric-mod-json",
|
"url": "fabric/fabric-mod-json",
|
||||||
@@ -737,6 +823,15 @@
|
|||||||
"minVersion": "1.20.2",
|
"minVersion": "1.20.2",
|
||||||
"wiki": "https://docs.neoforged.net/docs/worldgen/biomemodifier"
|
"wiki": "https://docs.neoforged.net/docs/worldgen/biomemodifier"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "neoforge:data_map_acceptable_villager_distances",
|
||||||
|
"url": "neoforge/data-map-acceptable-villager-distances",
|
||||||
|
"path": "neoforge/data_map_acceptable_villager_distances",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "neoforge",
|
||||||
|
"minVersion": "1.21.7",
|
||||||
|
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin/#neoforgeacceptable_villager_distances"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "neoforge:data_map_compostables",
|
"id": "neoforge:data_map_compostables",
|
||||||
"url": "neoforge/data-map-compostables",
|
"url": "neoforge/data-map-compostables",
|
||||||
@@ -791,6 +886,15 @@
|
|||||||
"minVersion": "1.20.4",
|
"minVersion": "1.20.4",
|
||||||
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin#neoforgeraid_hero_gifts"
|
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin#neoforgeraid_hero_gifts"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "neoforge:data_map_strippables",
|
||||||
|
"url": "neoforge/data-map-strippables",
|
||||||
|
"path": "neoforge/data_map_strippables",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "neoforge",
|
||||||
|
"minVersion": "1.21.8",
|
||||||
|
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin#neoforgestrippables"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "neoforge:data_map_vibration_frequencies",
|
"id": "neoforge:data_map_vibration_frequencies",
|
||||||
"url": "neoforge/data-map-vibration-frequencies",
|
"url": "neoforge/data-map-vibration-frequencies",
|
||||||
@@ -800,6 +904,15 @@
|
|||||||
"minVersion": "1.20.4",
|
"minVersion": "1.20.4",
|
||||||
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin#neoforgevibration_frequencies"
|
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin#neoforgevibration_frequencies"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "neoforge:data_map_villager_types",
|
||||||
|
"url": "neoforge/data-map-villager-types",
|
||||||
|
"path": "neoforge/data_map_villager_types",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "neoforge",
|
||||||
|
"minVersion": "1.21.4",
|
||||||
|
"wiki": "https://docs.neoforged.net/docs/resources/server/datamaps/builtin#neoforgevillager_types"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "neoforge:data_map_waxables",
|
"id": "neoforge:data_map_waxables",
|
||||||
"url": "neoforge/data-map-waxables",
|
"url": "neoforge/data-map-waxables",
|
||||||
@@ -843,6 +956,13 @@
|
|||||||
"tags": ["partners"],
|
"tags": ["partners"],
|
||||||
"dependency": "create"
|
"dependency": "create"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "loot-table-modifier:loot_modifier",
|
||||||
|
"url": "loot-table-modifier/loot_modifier",
|
||||||
|
"path": "loot-table-modifier/loot_modifier",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "loot-table-modifier"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "thermoo:environment_provider",
|
"id": "thermoo:environment_provider",
|
||||||
"url": "thermoo/environment_provider",
|
"url": "thermoo/environment_provider",
|
||||||
@@ -959,6 +1079,33 @@
|
|||||||
"dependency": "pixelmon",
|
"dependency": "pixelmon",
|
||||||
"wiki": "https://pixelmonmod.com/wiki/",
|
"wiki": "https://pixelmonmod.com/wiki/",
|
||||||
"minVersion": "1.21.1"
|
"minVersion": "1.21.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pixelmon:pokedex_trigger",
|
||||||
|
"url": "pixelmon/pokemon/pokedex/trigger",
|
||||||
|
"path": "pixelmon/pokemon/pokedex/trigger",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "pixelmon",
|
||||||
|
"wiki": "https://pixelmonmod.com/wiki/",
|
||||||
|
"minVersion": "1.21.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pixelmon:pokedex_region",
|
||||||
|
"url": "pixelmon/pokemon/pokedex/region",
|
||||||
|
"path": "pixelmon/pokemon/pokedex/region",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "pixelmon",
|
||||||
|
"wiki": "https://pixelmonmod.com/wiki/",
|
||||||
|
"minVersion": "1.21.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pixelmon:pokedex",
|
||||||
|
"url": "pixelmon/pokemon/pokedex/pokedex",
|
||||||
|
"path": "pixelmon/pokemon/pokedex/pokedex",
|
||||||
|
"tags": ["partners"],
|
||||||
|
"dependency": "pixelmon",
|
||||||
|
"wiki": "https://pixelmonmod.com/wiki/",
|
||||||
|
"minVersion": "1.21.1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"legacyGuides": [
|
"legacyGuides": [
|
||||||
|
|||||||
@@ -356,5 +356,8 @@
|
|||||||
"z": "Z",
|
"z": "Z",
|
||||||
"zoom_in": "Přiblížit",
|
"zoom_in": "Přiblížit",
|
||||||
"zoom_in_limit": "Nelze přiblížit více\n1 pixel = 4 bloky",
|
"zoom_in_limit": "Nelze přiblížit více\n1 pixel = 4 bloky",
|
||||||
"zoom_out": "Oddálit"
|
"zoom_out": "Oddálit",
|
||||||
|
"generator.ad_astra:planets": "Planeta Ad Astra",
|
||||||
|
"generator.chicken_variant": "Varianta slepic",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"add": "Hinzufügen",
|
"add": "Hinzufügen",
|
||||||
"add_bottom": "Zu Ende hinzufügen",
|
"add_bottom": "Zu Ende hinzufügen",
|
||||||
"add_top": "Zu Anfang hinzufügen",
|
"add_top": "Zum Anfang hinzufügen",
|
||||||
"collapse": "Minimieren",
|
"collapse": "Minimieren",
|
||||||
"collapse_all": "Halte %0% um alles zu minimieren",
|
"collapse_all": "Halte %0% um alles zu minimieren",
|
||||||
"copied": "Kopiert!",
|
"copied": "Kopiert!",
|
||||||
@@ -103,12 +103,12 @@
|
|||||||
"choose_file": "Datei auswählen",
|
"choose_file": "Datei auswählen",
|
||||||
"choose_zip_file": "ZIP-Datei auswählen",
|
"choose_zip_file": "ZIP-Datei auswählen",
|
||||||
"changelog.search": "Änderungen durchsuchen",
|
"changelog.search": "Änderungen durchsuchen",
|
||||||
"changelog": "Technische neuerungen",
|
"changelog": "Technische Neuerungen",
|
||||||
"any_version": "Jede",
|
"any_version": "Alle",
|
||||||
"assets": "Assets",
|
"assets": "Assets",
|
||||||
"back": "Zurück",
|
"back": "Zurück",
|
||||||
"configure_layers": "Ebenen Konfigurieren",
|
"configure_layers": "Ebenen Konfigurieren",
|
||||||
"copy_share": "Teilen-Link kopieren",
|
"copy_share": "Link kopieren/teilen",
|
||||||
"changelog.no_results": "Keine aufgezeichneten änderungen",
|
"changelog.no_results": "Keine aufgezeichneten änderungen",
|
||||||
"contributor.code": "Code Mitwirkender",
|
"contributor.code": "Code Mitwirkender",
|
||||||
"generator.error_max_version": "Dieser Generator ist nicht in Versionen über %0% verfügbar",
|
"generator.error_max_version": "Dieser Generator ist nicht in Versionen über %0% verfügbar",
|
||||||
@@ -346,5 +346,46 @@
|
|||||||
"versions.minecraft_versions": "Minecraft-Versionen",
|
"versions.minecraft_versions": "Minecraft-Versionen",
|
||||||
"indentation.minified": "Verkleinert",
|
"indentation.minified": "Verkleinert",
|
||||||
"preview.min_y": "Min Y",
|
"preview.min_y": "Min Y",
|
||||||
"generator.neoforge:data_map_parrot_imitations": "Papageienimitationen Datenzuordnung"
|
"generator.neoforge:data_map_parrot_imitations": "Papageienimitationen Datenzuordnung",
|
||||||
|
"generator.chicken_variant": "Huhn Variante",
|
||||||
|
"generator.create:recipes": "Rezepte erstellen",
|
||||||
|
"generator.dialog": "Dialog",
|
||||||
|
"generator.fabric:dependency_overrides": "Schlüssel",
|
||||||
|
"generator.texture_meta": "Textur Metadaten",
|
||||||
|
"generator.tag/dialog": "Dialog-Tag",
|
||||||
|
"generator.thermoo:environment_provider": "Umwelt-Anbieter",
|
||||||
|
"generator.thermoo:environment": "Umwelt",
|
||||||
|
"generator.thermoo:temperature_effect": "Temperatur Effekt",
|
||||||
|
"generator.thermoo:predicate": "Thermoo Prädikate",
|
||||||
|
"generator.pixelmon:raid_ally_set": "Pixelmon Raid Verbündeten Set",
|
||||||
|
"generator.pixelmon:raid_spawn_set": "Pixelmon Raid Spawn Set",
|
||||||
|
"generator.pixelmon:spawn_replacement": "Pixelmon Spawn-Ersatz",
|
||||||
|
"generator.pixelmon:type": "Pixelmon Typ",
|
||||||
|
"generator.pixelmon:growth": "Pixelmon Wachstum",
|
||||||
|
"generator.pixelmon:interaction_event": "Pixelmon Interaktion Ereignis",
|
||||||
|
"generator.pixelmon:research": "Pixelmon Forschung",
|
||||||
|
"generator.pixelmon:research_trigger": "Pixelmon Forschungsauslöser",
|
||||||
|
"generator.pixelmon:npc_preset": "Pixelmon NPC-Voreinstellung",
|
||||||
|
"generator.pixelmon:pokedex": "Pokedex",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "Pokedex Auslöser",
|
||||||
|
"generator.pixelmon:pokedex_region": "Region",
|
||||||
|
"partner.create": "Erstellen",
|
||||||
|
"partner.thermoo": "Thermoo",
|
||||||
|
"partner.pixelmon": "Pixelmon",
|
||||||
|
"generator.tag/timeline": "Zeitleisten Tag",
|
||||||
|
"generator.timeline": "Zeitleiste",
|
||||||
|
"generator.zombie_nautilus_variant": "Zombienautilus Variante",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "Zombienautilus Variante Tag",
|
||||||
|
"generator.ad_astra:planets": "Ad Astra-Planet",
|
||||||
|
"generator.tag/trade_set": "Handelsset-Tag",
|
||||||
|
"generator.tag/villager_trade": "Handel-Tag",
|
||||||
|
"generator.trade_set": "Handelsset",
|
||||||
|
"generator.villager_trade": "Handel",
|
||||||
|
"inline": "Inline",
|
||||||
|
"partner.ad_astra": "Ad Astra",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Datenkarte akzeptabler Dorfbewohner-Distanzen",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Datenkarte von Dorfbewohner-Biom-Typen",
|
||||||
|
"generator.loot-table-modifier:loot_modifier": "Beutetabellemodifikator",
|
||||||
|
"generator.neoforge:data_map_strippables": "Entrindbare Datenzuordnung",
|
||||||
|
"partner.loot-table-modifier": "Beutetabllenmodifikator"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,6 +61,7 @@
|
|||||||
"generate_new_color": "Generate new color",
|
"generate_new_color": "Generate new color",
|
||||||
"generate_new_seed": "Generate new seed",
|
"generate_new_seed": "Generate new seed",
|
||||||
"generate_new_uuid": "Generate new UUID",
|
"generate_new_uuid": "Generate new UUID",
|
||||||
|
"generator.ad_astra:planets": "Ad Astra Planet",
|
||||||
"generator.advancement": "Advancement",
|
"generator.advancement": "Advancement",
|
||||||
"generator.atlas": "Atlas",
|
"generator.atlas": "Atlas",
|
||||||
"generator.banner_pattern": "Banner Pattern",
|
"generator.banner_pattern": "Banner Pattern",
|
||||||
@@ -91,16 +92,20 @@
|
|||||||
"generator.jukebox_song": "Jukebox Song",
|
"generator.jukebox_song": "Jukebox Song",
|
||||||
"generator.lang": "Language",
|
"generator.lang": "Language",
|
||||||
"generator.loot_table": "Loot Table",
|
"generator.loot_table": "Loot Table",
|
||||||
|
"generator.loot-table-modifier:loot_modifier": "Loot Modifier",
|
||||||
"generator.model": "Model",
|
"generator.model": "Model",
|
||||||
"generator.texture_meta": "Texture Metadata",
|
"generator.texture_meta": "Texture Metadata",
|
||||||
"generator.neoforge:biome_modifier": "Biome Modifier",
|
"generator.neoforge:biome_modifier": "Biome Modifier",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Acceptable Villager Distances Data Map",
|
||||||
"generator.neoforge:data_map_compostables": "Compostables Data Map",
|
"generator.neoforge:data_map_compostables": "Compostables Data Map",
|
||||||
"generator.neoforge:data_map_furnace_fuels": "Furnace Fuels Data Map",
|
"generator.neoforge:data_map_furnace_fuels": "Furnace Fuels Data Map",
|
||||||
"generator.neoforge:data_map_monster_room_mobs": "Monster Room Mobs Data Map",
|
"generator.neoforge:data_map_monster_room_mobs": "Monster Room Mobs Data Map",
|
||||||
"generator.neoforge:data_map_oxidizables": "Oxidizables Data Map",
|
"generator.neoforge:data_map_oxidizables": "Oxidizables Data Map",
|
||||||
"generator.neoforge:data_map_parrot_imitations": "Parrot Imitations Data Map",
|
"generator.neoforge:data_map_parrot_imitations": "Parrot Imitations Data Map",
|
||||||
"generator.neoforge:data_map_raid_hero_gifts": "Raid Hero Gifts Data Map",
|
"generator.neoforge:data_map_raid_hero_gifts": "Raid Hero Gifts Data Map",
|
||||||
|
"generator.neoforge:data_map_strippables": "Strippables Data Map",
|
||||||
"generator.neoforge:data_map_vibration_frequencies": "Vibration Frequencies Data Map",
|
"generator.neoforge:data_map_vibration_frequencies": "Vibration Frequencies Data Map",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Biome Villager Types Data Map",
|
||||||
"generator.neoforge:data_map_waxables": "Waxables Data Map",
|
"generator.neoforge:data_map_waxables": "Waxables Data Map",
|
||||||
"generator.neoforge:structure_modifier": "Structure Modifier",
|
"generator.neoforge:structure_modifier": "Structure Modifier",
|
||||||
"generator.not_found": "Cannot find generator \"%0%\"",
|
"generator.not_found": "Cannot find generator \"%0%\"",
|
||||||
@@ -126,11 +131,15 @@
|
|||||||
"generator.tag/item": "Item Tag",
|
"generator.tag/item": "Item Tag",
|
||||||
"generator.tag/painting_variant": "Painting Variant Tag",
|
"generator.tag/painting_variant": "Painting Variant Tag",
|
||||||
"generator.tag/point_of_interest_type": "Point of Interest Type Tag",
|
"generator.tag/point_of_interest_type": "Point of Interest Type Tag",
|
||||||
|
"generator.tag/timeline": "Timeline Tag",
|
||||||
|
"generator.tag/trade_set": "Trade Set Tag",
|
||||||
|
"generator.tag/villager_trade": "Villager Trade Tag",
|
||||||
"generator.tag/worldgen/biome": "Biome Tag",
|
"generator.tag/worldgen/biome": "Biome Tag",
|
||||||
"generator.tag/worldgen/flat_level_generator_preset": "Flat World Preset Tag",
|
"generator.tag/worldgen/flat_level_generator_preset": "Flat World Preset Tag",
|
||||||
"generator.tag/worldgen/structure": "Structure Tag",
|
"generator.tag/worldgen/structure": "Structure Tag",
|
||||||
"generator.tag/worldgen/structure_set": "Structure Set Tag",
|
"generator.tag/worldgen/structure_set": "Structure Set Tag",
|
||||||
"generator.tag/worldgen/world_preset": "World Preset Tag",
|
"generator.tag/worldgen/world_preset": "World Preset Tag",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "Zombie Nautilus Variant Tag",
|
||||||
"generator.test_instance": "Test Instance",
|
"generator.test_instance": "Test Instance",
|
||||||
"generator.test_environment": "Test Environment",
|
"generator.test_environment": "Test Environment",
|
||||||
"generator.text_component": "Text Component",
|
"generator.text_component": "Text Component",
|
||||||
@@ -138,6 +147,7 @@
|
|||||||
"generator.thermoo:environment": "Environment",
|
"generator.thermoo:environment": "Environment",
|
||||||
"generator.thermoo:temperature_effect": "Temperature Effect",
|
"generator.thermoo:temperature_effect": "Temperature Effect",
|
||||||
"generator.thermoo:predicate": "Thermoo Predicates",
|
"generator.thermoo:predicate": "Thermoo Predicates",
|
||||||
|
"generator.timeline": "Timeline",
|
||||||
"generator.pixelmon:raid_ally_set": "Pixelmon Raid Ally Set",
|
"generator.pixelmon:raid_ally_set": "Pixelmon Raid Ally Set",
|
||||||
"generator.pixelmon:raid_spawn_set": "Pixelmon Raid Spawn Set",
|
"generator.pixelmon:raid_spawn_set": "Pixelmon Raid Spawn Set",
|
||||||
"generator.pixelmon:spawn_replacement": "Pixelmon Spawn Replacement",
|
"generator.pixelmon:spawn_replacement": "Pixelmon Spawn Replacement",
|
||||||
@@ -147,9 +157,14 @@
|
|||||||
"generator.pixelmon:research": "Pixelmon Research",
|
"generator.pixelmon:research": "Pixelmon Research",
|
||||||
"generator.pixelmon:research_trigger": "Pixelmon Research Trigger",
|
"generator.pixelmon:research_trigger": "Pixelmon Research Trigger",
|
||||||
"generator.pixelmon:npc_preset": "Pixelmon NPC Preset",
|
"generator.pixelmon:npc_preset": "Pixelmon NPC Preset",
|
||||||
|
"generator.pixelmon:pokedex": "Pokedex",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "Pokedex Trigger",
|
||||||
|
"generator.pixelmon:pokedex_region": "Region",
|
||||||
|
"generator.trade_set": "Trade Set",
|
||||||
"generator.trial_spawner": "Trial Spawner",
|
"generator.trial_spawner": "Trial Spawner",
|
||||||
"generator.trim_material": "Trim Material",
|
"generator.trim_material": "Trim Material",
|
||||||
"generator.trim_pattern": "Trim Pattern",
|
"generator.trim_pattern": "Trim Pattern",
|
||||||
|
"generator.villager_trade": "Villager Trade",
|
||||||
"generator.wolf_variant": "Wolf Variant",
|
"generator.wolf_variant": "Wolf Variant",
|
||||||
"generator.wolf_sound_variant": "Wolf Sound Variant",
|
"generator.wolf_sound_variant": "Wolf Sound Variant",
|
||||||
"generator.world": "World Settings",
|
"generator.world": "World Settings",
|
||||||
@@ -168,6 +183,7 @@
|
|||||||
"generator.worldgen/structure_set": "Structure Set",
|
"generator.worldgen/structure_set": "Structure Set",
|
||||||
"generator.worldgen/template_pool": "Template Pool",
|
"generator.worldgen/template_pool": "Template Pool",
|
||||||
"generator.worldgen/world_preset": "World Preset",
|
"generator.worldgen/world_preset": "World Preset",
|
||||||
|
"generator.zombie_nautilus_variant": "Zombie Nautilus Variant",
|
||||||
"generators.all": "All generators",
|
"generators.all": "All generators",
|
||||||
"generators.no_results": "No generators for this query",
|
"generators.no_results": "No generators for this query",
|
||||||
"generators.partners": "Modded Generators",
|
"generators.partners": "Modded Generators",
|
||||||
@@ -209,10 +225,12 @@
|
|||||||
"normalize": "Normalize",
|
"normalize": "Normalize",
|
||||||
"not_found.description": "The page you were looking for does not exist.",
|
"not_found.description": "The page you were looking for does not exist.",
|
||||||
"output_settings": "Output settings",
|
"output_settings": "Output settings",
|
||||||
|
"partner.ad_astra": "Ad Astra",
|
||||||
"partner.create": "Create",
|
"partner.create": "Create",
|
||||||
"partner.fabric": "Fabric",
|
"partner.fabric": "Fabric",
|
||||||
"partner.immersive_weathering": "Immersive Weathering",
|
"partner.immersive_weathering": "Immersive Weathering",
|
||||||
"partner.lithostitched": "Lithostitched",
|
"partner.lithostitched": "Lithostitched",
|
||||||
|
"partner.loot-table-modifier": "Loot Table Modifier",
|
||||||
"partner.neoforge": "NeoForge",
|
"partner.neoforge": "NeoForge",
|
||||||
"partner.obsidian": "Obsidian",
|
"partner.obsidian": "Obsidian",
|
||||||
"partner.ohthetreesyoullgrow": "Oh The Trees You'll Grow",
|
"partner.ohthetreesyoullgrow": "Oh The Trees You'll Grow",
|
||||||
@@ -344,7 +362,6 @@
|
|||||||
"versions.data_version": "Data version",
|
"versions.data_version": "Data version",
|
||||||
"versions.diff": "Mcmeta diff",
|
"versions.diff": "Mcmeta diff",
|
||||||
"versions.fixes": "Fixed bugs",
|
"versions.fixes": "Fixed bugs",
|
||||||
"versions.fixes.no_results": "No fixes",
|
|
||||||
"versions.latest_release": "Latest release",
|
"versions.latest_release": "Latest release",
|
||||||
"versions.latest_snapshot": "Latest snapshot",
|
"versions.latest_snapshot": "Latest snapshot",
|
||||||
"versions.minecraft_versions": "Minecraft Versions",
|
"versions.minecraft_versions": "Minecraft Versions",
|
||||||
|
|||||||
@@ -235,5 +235,11 @@
|
|||||||
"generator.frog_variant": "Variante de la Rana",
|
"generator.frog_variant": "Variante de la Rana",
|
||||||
"generator.test_instance": "Instancia de prueba",
|
"generator.test_instance": "Instancia de prueba",
|
||||||
"generator.test_environment": "Entorno de prueba",
|
"generator.test_environment": "Entorno de prueba",
|
||||||
"generator.wolf_variant": "Variante del lobo"
|
"generator.wolf_variant": "Variante del lobo",
|
||||||
|
"generator.create:recipes": "Crear recetas",
|
||||||
|
"generator.dialog": "Diálogo",
|
||||||
|
"generator.tag/dialog": "Etiqueta de diálogo",
|
||||||
|
"generator.tag/timeline": "Etiqueta de línea de tiempo",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "Etiqueta de variante de Nautilus zombi",
|
||||||
|
"generator.thermoo:environment_provider": "Proveedor de entorno"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"2d": "2D",
|
"2d": "2D",
|
||||||
"3d": "3D",
|
"3d": "3D",
|
||||||
"add": "Ajouter",
|
"add": "Ajouter",
|
||||||
"add_bottom": "Ajouter au bas",
|
"add_bottom": "Ajouter en bas",
|
||||||
"add_key": "Ajouter une clé",
|
"add_key": "Ajouter une clé",
|
||||||
"add_top": "Ajouter au haut",
|
"add_top": "Ajouter au haut",
|
||||||
"any_version": "Toute",
|
"any_version": "Toute",
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
"format.snbt": "SNBT",
|
"format.snbt": "SNBT",
|
||||||
"format.yaml": "YAML",
|
"format.yaml": "YAML",
|
||||||
"generate_new_color": "Générer une nouvelle couleur",
|
"generate_new_color": "Générer une nouvelle couleur",
|
||||||
"generate_new_seed": "Générer une nouvelle graine",
|
"generate_new_seed": "Générer une nouvelle seed",
|
||||||
"generate_new_uuid": "Générer un nouvel UUID",
|
"generate_new_uuid": "Générer un nouvel UUID",
|
||||||
"generator.advancement": "Progrès",
|
"generator.advancement": "Progrès",
|
||||||
"generator.atlas": "Atlas",
|
"generator.atlas": "Atlas",
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
"generator.tag/worldgen/structure_set": "Tag d'ensemble de structures",
|
"generator.tag/worldgen/structure_set": "Tag d'ensemble de structures",
|
||||||
"generator.tag/worldgen/world_preset": "Tag de préréglage de monde",
|
"generator.tag/worldgen/world_preset": "Tag de préréglage de monde",
|
||||||
"generator.text_component": "Composant de texte",
|
"generator.text_component": "Composant de texte",
|
||||||
"generator.trial_spawner": "Générateur d'épreuve",
|
"generator.trial_spawner": "Spawner de chambre d'épreuve",
|
||||||
"generator.trim_material": "Matériau d'ornement",
|
"generator.trim_material": "Matériau d'ornement",
|
||||||
"generator.trim_pattern": "Modèle d'ornement",
|
"generator.trim_pattern": "Modèle d'ornement",
|
||||||
"generator.wolf_variant": "Variante de loup",
|
"generator.wolf_variant": "Variante de loup",
|
||||||
@@ -195,7 +195,7 @@
|
|||||||
"preview.final_density": "Afficher la densité finale",
|
"preview.final_density": "Afficher la densité finale",
|
||||||
"preview.height": "Hauteur",
|
"preview.height": "Hauteur",
|
||||||
"preview.luck": "Chance",
|
"preview.luck": "Chance",
|
||||||
"preview.min_y": "Y min.",
|
"preview.min_y": "Y min",
|
||||||
"preview.offset": "Décalage",
|
"preview.offset": "Décalage",
|
||||||
"preview.peaks": "Pics",
|
"preview.peaks": "Pics",
|
||||||
"preview.scale": "Échelle",
|
"preview.scale": "Échelle",
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
"sounds.delay": "Délai",
|
"sounds.delay": "Délai",
|
||||||
"sounds.download_function": "Télécharger la fonction",
|
"sounds.download_function": "Télécharger la fonction",
|
||||||
"sounds.loading_sound": "Chargement du son",
|
"sounds.loading_sound": "Chargement du son",
|
||||||
"sounds.pitch": "Hauteur",
|
"sounds.pitch": "Inclinaison",
|
||||||
"sounds.play": "Écouter",
|
"sounds.play": "Écouter",
|
||||||
"sounds.play_all": "Écouter tous",
|
"sounds.play_all": "Écouter tous",
|
||||||
"sounds.play_sound": "Écouter le son",
|
"sounds.play_sound": "Écouter le son",
|
||||||
@@ -337,5 +337,51 @@
|
|||||||
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
||||||
"generator.sky_aesthetics:sky": "Ciel personnalisé",
|
"generator.sky_aesthetics:sky": "Ciel personnalisé",
|
||||||
"partner.fabric": "Fabric",
|
"partner.fabric": "Fabric",
|
||||||
"generator.dialog": "Dialogue"
|
"generator.dialog": "Dialogue",
|
||||||
|
"generator.thermoo:environment": "Environnement",
|
||||||
|
"generator.create:recipes": "Créer des recettes",
|
||||||
|
"generator.frog_variant": "Variante de grenouille",
|
||||||
|
"generator.texture_meta": "Métadonnée de texture",
|
||||||
|
"generator.pig_variant": "Variante de cochon",
|
||||||
|
"generator.tag/dialog": "Tag de dialogue",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json",
|
||||||
|
"generator.chicken_variant": "Variante de poule",
|
||||||
|
"inline": "En ligne",
|
||||||
|
"generator.test_environment": "Environnement de test",
|
||||||
|
"generator.wolf_sound_variant": "Variante de son du loup",
|
||||||
|
"changelog.edit_on_github": "Modifier les changements techniques sur GitHub",
|
||||||
|
"generator.cow_variant": "Variante de vache",
|
||||||
|
"generator.cat_variant": "Variante de chat",
|
||||||
|
"generator.test_instance": "Instance de test",
|
||||||
|
"partner.create": "Create",
|
||||||
|
"partner.thermoo": "Thermoo",
|
||||||
|
"partner.pixelmon": "Pixelmon",
|
||||||
|
"presets.no_results": "Pas de préréglages",
|
||||||
|
"presets.no_results_for_query": "Pas de préréglages pour cette requête",
|
||||||
|
"generator.thermoo:temperature_effect": "Effets de température",
|
||||||
|
"generator.pixelmon:pokedex_region": "Région",
|
||||||
|
"generator.pixelmon:type": "Type de pixelmon",
|
||||||
|
"generator.pixelmon:growth": "Croissance des Pixelmons",
|
||||||
|
"generator.pixelmon:interaction_event": "Évènement d'interaction des Pixelmon",
|
||||||
|
"generator.pixelmon:research": "Recherche des Pixelmon",
|
||||||
|
"generator.pixelmon:research_trigger": "Déclencheur de recherche des Pixelmon",
|
||||||
|
"generator.pixelmon:npc_preset": "Préréglage PNJ de Pixelmon",
|
||||||
|
"generator.pixelmon:pokedex": "Pokédex",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "Déclencheur de Pokédex",
|
||||||
|
"generator.thermoo:environment_provider": "Fournisseur d'environnement",
|
||||||
|
"generator.pixelmon:spawn_replacement": "Remplacement du spawn des Pixelmons",
|
||||||
|
"generator.ad_astra:planets": "Planète Ad Astra",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "Tag de variante de Nautile Zombie",
|
||||||
|
"generator.zombie_nautilus_variant": "Variante de Nautile Zombie",
|
||||||
|
"partner.ad_astra": "Ad Astra",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Carte des distances acceptables entre les villageois",
|
||||||
|
"generator.neoforge:data_map_strippables": "Carte des données des objets décapables",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Carte des types de villageois à biome",
|
||||||
|
"generator.tag/timeline": "Tag de chronologie",
|
||||||
|
"generator.thermoo:predicate": "Prédicats de Thermoo",
|
||||||
|
"generator.timeline": "Chronologie",
|
||||||
|
"generator.pixelmon:raid_ally_set": "Ensemble d'alliés de Raid Pixelmon",
|
||||||
|
"generator.pixelmon:raid_spawn_set": "Ensemble de spawns de Raid Pixelmon",
|
||||||
|
"generator.loot-table-modifier:loot_modifier": "Modificateur de butin",
|
||||||
|
"partner.loot-table-modifier": "Modificateur de table de butin"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
"generator.text_component": "テキストコンポーネント",
|
"generator.text_component": "テキストコンポーネント",
|
||||||
"generator.trim_material": "装飾の材料 (Trim Material)",
|
"generator.trim_material": "装飾の材料 (Trim Material)",
|
||||||
"generator.trim_pattern": "装飾のパターン (Trim Pattern)",
|
"generator.trim_pattern": "装飾のパターン (Trim Pattern)",
|
||||||
"generator.world": "ワールド設定",
|
"generator.world": "ワールド設定 (World Settings)",
|
||||||
"generator.worldgen": "ワールドジェネレーター (World Generator)",
|
"generator.worldgen": "ワールドジェネレーター (World Generator)",
|
||||||
"generator.worldgen/biome": "バイオーム",
|
"generator.worldgen/biome": "バイオーム",
|
||||||
"generator.worldgen/configured_carver": "地形彫刻 (Configured Carver)",
|
"generator.worldgen/configured_carver": "地形彫刻 (Configured Carver)",
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
"generator.tag/worldgen/flat_level_generator_preset": "フラットワールドプリセットタグ (#Flat World Preset)",
|
"generator.tag/worldgen/flat_level_generator_preset": "フラットワールドプリセットタグ (#Flat World Preset)",
|
||||||
"generator.tag/worldgen/world_preset": "ワールドプリセットタグ (#World Preset)",
|
"generator.tag/worldgen/world_preset": "ワールドプリセットタグ (#World Preset)",
|
||||||
"generator.test_instance": "テストインスタンス (Test Instance)",
|
"generator.test_instance": "テストインスタンス (Test Instance)",
|
||||||
"generator.trial_spawner": "トライアルスポナー",
|
"generator.trial_spawner": "トライアルスポナー (Trial Spawner)",
|
||||||
"partner.create": "Create",
|
"partner.create": "Create",
|
||||||
"title.convert": "変換",
|
"title.convert": "変換",
|
||||||
"title.convert.formats": "0% を %1% へ変換",
|
"title.convert.formats": "0% を %1% へ変換",
|
||||||
@@ -339,5 +339,38 @@
|
|||||||
"generator.tag/instrument": "楽器タグ (#Instrument)",
|
"generator.tag/instrument": "楽器タグ (#Instrument)",
|
||||||
"generator.tag/worldgen/structure": "構造物タグ (#Structure)",
|
"generator.tag/worldgen/structure": "構造物タグ (#Structure)",
|
||||||
"generator.tag/worldgen/structure_set": "構造物セット (#Structure Set)",
|
"generator.tag/worldgen/structure_set": "構造物セット (#Structure Set)",
|
||||||
"generator.chicken_variant": "ニワトリの亜種 (Chicken Variant)"
|
"generator.chicken_variant": "ニワトリの亜種 (Chicken Variant)",
|
||||||
|
"change.obsolete": "この変更は、このリリースサイクルの後続の変更によって置き換えられました",
|
||||||
|
"generate_new_color": "新しい色を生成",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json",
|
||||||
|
"generator.immersive_weathering:block_growth": "ブロック成長 (Block Growth)",
|
||||||
|
"generator.loot-table-modifier:loot_modifier": "ルート修正値 (Loot Modifier)",
|
||||||
|
"generator.sky_aesthetics:sky": "カスタムスカイ",
|
||||||
|
"generator.tag/timeline": "Timeline Tag",
|
||||||
|
"generator.tag/trade_set": "Trade Set Tag",
|
||||||
|
"generator.test_environment": "テスト環境",
|
||||||
|
"generator.thermoo:environment_provider": "環境プロバイダー",
|
||||||
|
"generator.thermoo:environment": "環境",
|
||||||
|
"generator.pixelmon:pokedex_region": "リージョン (Region)",
|
||||||
|
"generator.villager_trade": "村人交易 (Villager Trade)",
|
||||||
|
"generator.wolf_sound_variant": "狼の音のバリエーション (Wolf Sound Variant)",
|
||||||
|
"generator.zombie_nautilus_variant": "ゾンビオウムガイの亜種",
|
||||||
|
"missing_key": "必要なキー (%0%) がありません",
|
||||||
|
"partner.loot-table-modifier": "Loot Table の変更",
|
||||||
|
"presets.no_results": "プリセットなし",
|
||||||
|
"presets.no_results_for_query": "このクエリにはプリセットがありません",
|
||||||
|
"root": "Root",
|
||||||
|
"generator.neoforge:structure_modifier": "構造物の修正値 (Structure Modifier)",
|
||||||
|
"partner.pixelmon": "Pixelmon",
|
||||||
|
"generator.pixelmon:raid_spawn_set": "Pixelmon 襲撃スポーンセット (Raid Spawn Set)",
|
||||||
|
"generator.pixelmon:spawn_replacement": "Pixelmon スポーン交換 (Spawn Replacement)",
|
||||||
|
"generator.pixelmon:type": "Pixelmon タイプ (Type)",
|
||||||
|
"generator.pixelmon:growth": "Pixelmon 成長 (Growth)",
|
||||||
|
"generator.pixelmon:interaction_event": "Pixelmon インタラクションイベント (Interaction Event)",
|
||||||
|
"generator.pixelmon:research": "Pixelmon 研究 (Research)",
|
||||||
|
"generator.pixelmon:research_trigger": "Pixelmon 研究トリガー (Research Trigger)",
|
||||||
|
"generator.pixelmon:npc_preset": "Pixelmon NPCプリセット (NPC Preset)",
|
||||||
|
"generator.pixelmon:pokedex": "Pokedex",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "Pokedex トリガー (Trigger)",
|
||||||
|
"generator.trade_set": "取引設定 (Trade Set)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"disabled": "비활성화됨",
|
"disabled": "비활성화됨",
|
||||||
"donate": "후원",
|
"donate": "후원",
|
||||||
"download": "다운로드",
|
"download": "다운로드",
|
||||||
"duplicate": "복제",
|
"duplicate": "복사",
|
||||||
"enabled": "활성화됨",
|
"enabled": "활성화됨",
|
||||||
"entries_hidden": "%0%개의 항목 숨겨짐",
|
"entries_hidden": "%0%개의 항목 숨겨짐",
|
||||||
"entries_hidden.all": "전부 보기",
|
"entries_hidden.all": "전부 보기",
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
"generator.block_definition": "블록 상태",
|
"generator.block_definition": "블록 상태",
|
||||||
"generator.chat_type": "채팅 타입",
|
"generator.chat_type": "채팅 타입",
|
||||||
"generator.dimension": "차원",
|
"generator.dimension": "차원",
|
||||||
"generator.dimension_type": "차원 종류",
|
"generator.dimension_type": "차원 타입",
|
||||||
"generator.immersive_weathering.block_growth": "블럭 성장",
|
"generator.immersive_weathering.block_growth": "블럭 성장",
|
||||||
"generator.item_modifier": "아이템 모디파이어",
|
"generator.item_modifier": "아이템 모디파이어",
|
||||||
"generator.loot_table": "루트 테이블",
|
"generator.loot_table": "루트 테이블",
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
"hide_project": "프로젝트 숨기기",
|
"hide_project": "프로젝트 숨기기",
|
||||||
"highlighting": "강조",
|
"highlighting": "강조",
|
||||||
"home": "홈",
|
"home": "홈",
|
||||||
"import": "임포트",
|
"import": "가져오기",
|
||||||
"indentation.2_spaces": "2 스페이스",
|
"indentation.2_spaces": "2 스페이스",
|
||||||
"indentation.4_spaces": "4 스페이스",
|
"indentation.4_spaces": "4 스페이스",
|
||||||
"indentation.minified": "축소됨",
|
"indentation.minified": "축소됨",
|
||||||
@@ -200,8 +200,8 @@
|
|||||||
"versions.resource_pack_format": "리소스 팩 형식",
|
"versions.resource_pack_format": "리소스 팩 형식",
|
||||||
"versions.search": "버전 검색",
|
"versions.search": "버전 검색",
|
||||||
"worldgen": "월드젠",
|
"worldgen": "월드젠",
|
||||||
"zoom_in": "줌 인",
|
"zoom_in": "확대",
|
||||||
"zoom_out": "줌 아웃",
|
"zoom_out": "축소",
|
||||||
"change.obsolete": "이 변경 사항은 이번 릴리스 주기의 이후 변경 사항으로 대체되었습니다",
|
"change.obsolete": "이 변경 사항은 이번 릴리스 주기의 이후 변경 사항으로 대체되었습니다",
|
||||||
"2d": "2D",
|
"2d": "2D",
|
||||||
"3d": "3D",
|
"3d": "3D",
|
||||||
@@ -219,7 +219,7 @@
|
|||||||
"generators.popular": "인기 생성기",
|
"generators.popular": "인기 생성기",
|
||||||
"title.transformation": "변형 시각화",
|
"title.transformation": "변형 시각화",
|
||||||
"tools": "도구",
|
"tools": "도구",
|
||||||
"generator.damage_type": "데미지 종류",
|
"generator.damage_type": "데미지 타입",
|
||||||
"generator.dialog": "다이얼로그",
|
"generator.dialog": "다이얼로그",
|
||||||
"generator.enchantment_provider": "마법 부어 공급자",
|
"generator.enchantment_provider": "마법 부어 공급자",
|
||||||
"transformation.translation": "번역",
|
"transformation.translation": "번역",
|
||||||
@@ -253,5 +253,37 @@
|
|||||||
"customized.structures": "구조물",
|
"customized.structures": "구조물",
|
||||||
"format.snbt": "SNBT",
|
"format.snbt": "SNBT",
|
||||||
"generate_new_color": "새로운 색 생성하기",
|
"generate_new_color": "새로운 색 생성하기",
|
||||||
"changelog.edit_on_github": "깃헙에서 기술적 변경 사항 편집하기"
|
"changelog.edit_on_github": "깃헙에서 기술적 변경 사항 편집하기",
|
||||||
|
"layer": "층",
|
||||||
|
"mode.top": "상단",
|
||||||
|
"mode.3d": "3D",
|
||||||
|
"layer.depth": "깊이",
|
||||||
|
"inline": "인라인",
|
||||||
|
"guides": "가이드",
|
||||||
|
"generators.no_results": "검색 결과에 맞는 생성기가 없습니다",
|
||||||
|
"convert.swap": "교환",
|
||||||
|
"cutoff": "절단",
|
||||||
|
"missing_key": "필수키 %0%가 누락되었습니다",
|
||||||
|
"versions.wiki": "위키",
|
||||||
|
"whats_new": "무엇이 바뀌었나요?",
|
||||||
|
"whats_new.description": "misode.github.io의 최신 개발 소식을 받아보세요. 아래에서 최근에 추가된 기능을 확인해 보세요.",
|
||||||
|
"whats_new.new": "새로운 것",
|
||||||
|
"wiki": "위키",
|
||||||
|
"y": "Y",
|
||||||
|
"z": "Z",
|
||||||
|
"zoom_in_limit": "더 이상 확대할 수 없습니다.\n1픽셀 = 4블록",
|
||||||
|
"convert.format.loot-table": "전리품 테이블",
|
||||||
|
"convert.format.item-modifier": "아이템 수정자",
|
||||||
|
"generator.ad_astra:planets": "Ad Astra 행성",
|
||||||
|
"generator.browse_available": "%0% 에서 사용 가능한 생성기 보기",
|
||||||
|
"generator.chicken_variant": "닭 종류",
|
||||||
|
"generator.equipment": "장비",
|
||||||
|
"generator.error_max_version": "이 생성기는 %0% 이상 버전에서 사용할 수 없습니다.",
|
||||||
|
"generator.error_min_version": "이 생성기는 %0% 버전 이상에서만 사용할 수 있습니다.",
|
||||||
|
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json",
|
||||||
|
"generator.font": "글꼴",
|
||||||
|
"generator.frog_variant": "개구리 종류",
|
||||||
|
"generator.instrument": "악기",
|
||||||
|
"generator.item_definition": "아이템"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -274,5 +274,14 @@
|
|||||||
"sounds.loading_sound": "Carregando sons",
|
"sounds.loading_sound": "Carregando sons",
|
||||||
"sounds.volume": "Volume",
|
"sounds.volume": "Volume",
|
||||||
"switch_version": "Mudar versão",
|
"switch_version": "Mudar versão",
|
||||||
"cutoff": "Limite"
|
"cutoff": "Limite",
|
||||||
|
"generator.ad_astra:planets": "Planeta do Ad Astra",
|
||||||
|
"generator.chicken_variant": "Variante de Galinha",
|
||||||
|
"generator.create:recipes": "Criar receitas",
|
||||||
|
"generator.dialog": "Diálogo",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json",
|
||||||
|
"generator.texture_meta": "Metadados de textura",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Mapa de dados das distâncias aceitáveis entre aldeões",
|
||||||
|
"generator.neoforge:data_map_strippables": "Mapa de dados de objetos descascáveis",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Mapa de dados dos tipos de aldeão com bioma"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
"configure_layers": "Выбрать слой",
|
"configure_layers": "Выбрать слой",
|
||||||
"contributor.code": "Коддер",
|
"contributor.code": "Коддер",
|
||||||
"contributor.infrastructure": "Инфраструктура",
|
"contributor.infrastructure": "Инфраструктура",
|
||||||
"contributor.report": "QA",
|
"contributor.report": "Отчёт об ошибке",
|
||||||
"contributor.support": "Поддержка",
|
"contributor.support": "Поддержка",
|
||||||
"contributor.translation": "Переводчик",
|
"contributor.translation": "Переводчик",
|
||||||
"copied": "Скопировано!",
|
"copied": "Скопировано!",
|
||||||
@@ -154,7 +154,7 @@
|
|||||||
"preview.weather.rain": "Дождь",
|
"preview.weather.rain": "Дождь",
|
||||||
"preview.weather.thunder": "Гроза",
|
"preview.weather.thunder": "Гроза",
|
||||||
"preview.width": "Ширина",
|
"preview.width": "Ширина",
|
||||||
"project.cancel": "Отмена",
|
"project.cancel": "Отменить",
|
||||||
"project.create": "Создать новый проект",
|
"project.create": "Создать новый проект",
|
||||||
"project.delete": "Удалить проект",
|
"project.delete": "Удалить проект",
|
||||||
"project.delete_confirm.1": "Вы собираетесь удалить %0%",
|
"project.delete_confirm.1": "Вы собираетесь удалить %0%",
|
||||||
@@ -354,5 +354,47 @@
|
|||||||
"generator.frog_variant": "Вариант Лягушки",
|
"generator.frog_variant": "Вариант Лягушки",
|
||||||
"generator.test_instance": "Тестовая Задача",
|
"generator.test_instance": "Тестовая Задача",
|
||||||
"generator.test_environment": "Тестовая Среда",
|
"generator.test_environment": "Тестовая Среда",
|
||||||
"generator.wolf_sound_variant": "Вариация звука Волка"
|
"generator.wolf_sound_variant": "Вариация звука Волка",
|
||||||
|
"generator.chicken_variant": "Вариант Курицы",
|
||||||
|
"generator.create:recipes": "Создать рецепт",
|
||||||
|
"generator.dialog": "Диалог",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json",
|
||||||
|
"generator.texture_meta": "Метаданные текстуры",
|
||||||
|
"generator.tag/dialog": "Тэг для Диалога",
|
||||||
|
"generator.thermoo:environment_provider": "Поставщик Окружения",
|
||||||
|
"generator.thermoo:environment": "Окружение",
|
||||||
|
"generator.thermoo:temperature_effect": "Температурный Эффект",
|
||||||
|
"generator.thermoo:predicate": "Предикаты Thermoo",
|
||||||
|
"generator.pixelmon:pokedex_region": "Регион",
|
||||||
|
"inline": "Встроенный",
|
||||||
|
"partner.create": "Create",
|
||||||
|
"partner.thermoo": "Thermoo",
|
||||||
|
"generator.ad_astra:planets": "Планета Ad Astra",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Карта реакций жителей на сущность",
|
||||||
|
"generator.neoforge:data_map_strippables": "Карта удаляемых значений",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Карта биомов для типов жителей",
|
||||||
|
"generator.pixelmon:raid_ally_set": "Набор союзников для рейда Pixelmon",
|
||||||
|
"generator.pixelmon:raid_spawn_set": "Набор спавнов в рейде Pixelmon",
|
||||||
|
"generator.pixelmon:spawn_replacement": "Замена спавна Pixelmon",
|
||||||
|
"generator.pixelmon:type": "Тип Pixelmon",
|
||||||
|
"generator.pixelmon:growth": "Рост Pixelmon",
|
||||||
|
"generator.pixelmon:interaction_event": "Событие взаимодействия Pixelmon",
|
||||||
|
"generator.pixelmon:research": "Исследование Pixelmon",
|
||||||
|
"generator.pixelmon:research_trigger": "Триггер Исследования Pixelmon",
|
||||||
|
"generator.pixelmon:npc_preset": "Пресет NPC Pixelmon",
|
||||||
|
"generator.pixelmon:pokedex": "Покедекс",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "Триггер Покедекса",
|
||||||
|
"partner.ad_astra": "Ad Astra (К Звёздам!)",
|
||||||
|
"partner.pixelmon": "Pixelmon",
|
||||||
|
"generator.loot-table-modifier:loot_modifier": "Модификатор выпадение",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "Тэг варианта зомби-наутилуса",
|
||||||
|
"generator.zombie_nautilus_variant": "Вариант зомби-наутилуса",
|
||||||
|
"partner.loot-table-modifier": "Модификатор таблицы выпадения",
|
||||||
|
"generator.tag/timeline": "Тег Временной Шкалы",
|
||||||
|
"generator.villager_trade": "Торг с жителем",
|
||||||
|
"generator.tag/villager_trade": "Тег Продаж Жителя",
|
||||||
|
"generator.timeline": "Временная Шкала",
|
||||||
|
"generator.sulfur_cube_archetype": "Архетип Серного Куба",
|
||||||
|
"generator.tag/trade_set": "Тег Набора Торговли",
|
||||||
|
"generator.trade_set": "Набор Торговли"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,5 +64,97 @@
|
|||||||
"title.generator": "%0% Generátor",
|
"title.generator": "%0% Generátor",
|
||||||
"title.home": "Data Packové Generátory",
|
"title.home": "Data Packové Generátory",
|
||||||
"undo": "Späť",
|
"undo": "Späť",
|
||||||
"worldgen/biome": "Bióm"
|
"worldgen/biome": "Bióm",
|
||||||
|
"2d": "2D",
|
||||||
|
"3d": "3D",
|
||||||
|
"add_key": "Pridať kľúč",
|
||||||
|
"any_version": "Akýkoľvek",
|
||||||
|
"back": "Späť",
|
||||||
|
"change.obsolete": "Táto zmena bola nahradená aktuálnejšou zmenou v cykle vydaní",
|
||||||
|
"changelog": "Technický záznam zmien",
|
||||||
|
"changelog.edit_on_github": "Upraviť technické zmeny na GitHub",
|
||||||
|
"changelog.no_results": "Žiadne zdokumentované zmeny",
|
||||||
|
"changelog.search": "Vyhľadávať zmeny",
|
||||||
|
"changelog.show_more": "Zobraziť ďalších %0% zmien",
|
||||||
|
"choose_file": "Vybrať súbor",
|
||||||
|
"choose_zip_file": "Vybrať ZIP archív",
|
||||||
|
"configure_layers": "Konfigurovať vrstvy",
|
||||||
|
"contributor.code": "Prispievateľ kódu",
|
||||||
|
"contributor.infrastructure": "Infraštruktúra",
|
||||||
|
"contributor.report": "Hlásič chýb",
|
||||||
|
"contributor.support": "Podpora",
|
||||||
|
"contributor.translation": "Prekladač",
|
||||||
|
"convert.format.give-command": "/give",
|
||||||
|
"convert.format.loot-table": "Tabuľka koristi",
|
||||||
|
"convert.format.item-modifier": "Modifikátor itemov",
|
||||||
|
"convert.format.recipe-output": "Výstup receptov",
|
||||||
|
"convert.select": "--vyberte--",
|
||||||
|
"convert.swap": "Vymeniť",
|
||||||
|
"copy_share": "Kopírovať odkaz na zdieľanie",
|
||||||
|
"customized.basic": "Základný",
|
||||||
|
"customized.biomes": "Biómy",
|
||||||
|
"customized.error_min_version": "Vlastné svety nie sú k dispozícii vo verziách starších ako %0%",
|
||||||
|
"customized.ores": "Rudy",
|
||||||
|
"customized.structures": "Štruktúry",
|
||||||
|
"cutoff": "Limit",
|
||||||
|
"developed_by": "Vyvinuté",
|
||||||
|
"disabled": "Blokovaný",
|
||||||
|
"donate": "Podporiť",
|
||||||
|
"enabled": "Povolený",
|
||||||
|
"follow_reference": "Sledovať referenciu",
|
||||||
|
"format.json": "JSON",
|
||||||
|
"format.snbt": "SNBT",
|
||||||
|
"format.yaml": "YAML",
|
||||||
|
"generate_new_color": "Generovať novú farbu",
|
||||||
|
"generate_new_uuid": "Generovať nové UUID",
|
||||||
|
"generator.ad_astra:planets": "Planéta Ad Astra",
|
||||||
|
"generator.atlas": "Atlas",
|
||||||
|
"generator.banner_pattern": "Vzor zástavy",
|
||||||
|
"generator.block_definition": "Stav bloku",
|
||||||
|
"generator.browse_available": "Prehľadávať generátory dostupné pre %0%",
|
||||||
|
"generator.cat_variant": "Varianty mačiek",
|
||||||
|
"generator.chat_type": "Typ četu",
|
||||||
|
"generator.chicken_variant": "Varianty sliepkok",
|
||||||
|
"generator.cow_variant": "Varianty kráv",
|
||||||
|
"generator.create:recipes": "Vytvoriť recepty",
|
||||||
|
"generator.damage_type": "Typ poškodenia",
|
||||||
|
"generator.dialog": "Dialóg",
|
||||||
|
"generator.enchantment": "Očarovanie",
|
||||||
|
"generator.enchantment_provider": "Poskytovateľ očarovania",
|
||||||
|
"generator.equipment": "Vybavenie",
|
||||||
|
"generator.error_max_version": "Tento generátor nie je dostupný vo verziách novších ako %0%",
|
||||||
|
"generator.error_min_version": "Minimálna verzia pre tento generátor je %0%",
|
||||||
|
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_loader_dependencies.json",
|
||||||
|
"generator.font": "Písmo",
|
||||||
|
"generator.frog_variant": "Varianty žiab",
|
||||||
|
"generator.immersive_weathering:block_growth": "Rast blokov",
|
||||||
|
"generator.instrument": "Nástroj",
|
||||||
|
"generator.item_definition": "Item",
|
||||||
|
"generator.jukebox_song": "Pieseň do jukeboxu",
|
||||||
|
"generator.lang": "Jazyk",
|
||||||
|
"generator.model": "Model",
|
||||||
|
"generator.texture_meta": "Metadáta textúr",
|
||||||
|
"generator.neoforge:biome_modifier": "Modifikátor biómov",
|
||||||
|
"assets": "Zdroje",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Dátová mapa vzdialeností prijateľných dedinčanov",
|
||||||
|
"generator.neoforge:data_map_compostables": "Dátová mapa kompostovateľných itemov",
|
||||||
|
"generator.neoforge:data_map_furnace_fuels": "Dátová mapa palív do pece",
|
||||||
|
"generator.neoforge:data_map_monster_room_mobs": "Dátová mapa mobov v Spawner Miestnosti",
|
||||||
|
"generator.neoforge:data_map_oxidizables": "Dátová mapa oxidovateľných blokov",
|
||||||
|
"generator.neoforge:data_map_parrot_imitations": "Dátová mapa papagájskych imitácii",
|
||||||
|
"generator.neoforge:data_map_raid_hero_gifts": "Dátová mapa darčekov pre nájazdového hrdinu",
|
||||||
|
"generator.neoforge:data_map_strippables": "Dátová mapa olúpateľných blokov",
|
||||||
|
"generator.neoforge:data_map_vibration_frequencies": "Dátová mapa frekvencií vibrácií",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Dátová mapa biómových typov dedinčanov",
|
||||||
|
"generator.neoforge:data_map_waxables": "Dátová mapa voskovateľných blokov",
|
||||||
|
"generator.neoforge:structure_modifier": "Modifikátor štruktúr",
|
||||||
|
"generator.not_found": "Nemôžem nájsť generátor \"%0%\"",
|
||||||
|
"generator.ohthetreesyoullgrow:configured_feature": "Funkcia OTTYG",
|
||||||
|
"generator.sky_aesthetics:sky": "Vlastná obloha",
|
||||||
|
"generator.pack_mcmeta": "pack.mcmeta",
|
||||||
|
"generator.painting_variant": "Variant maľby",
|
||||||
|
"generator.pig_variant": "Variant prasaťa",
|
||||||
|
"generator.post_effect": "Postefekt",
|
||||||
|
"generator.switch_version": "Prepnúť na %0%"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"any_version": "Herhangi",
|
"any_version": "Herhangi",
|
||||||
"assets": "Assetler",
|
"assets": "Assetler",
|
||||||
"back": "Geri",
|
"back": "Geri",
|
||||||
"change.obsolete": "This change has been replaced by a later change in this release cycle",
|
"change.obsolete": "Bu değişim, yayınlamış bu aşamada değiştirildi",
|
||||||
"changelog": "Teknik değişim kaydı",
|
"changelog": "Teknik değişim kaydı",
|
||||||
"changelog.no_results": "Kaydedilmiş değişim bulunamadı",
|
"changelog.no_results": "Kaydedilmiş değişim bulunamadı",
|
||||||
"changelog.search": "Değşimleri ara",
|
"changelog.search": "Değşimleri ara",
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
"generate_new_uuid": "Yeni UUID oluştur",
|
"generate_new_uuid": "Yeni UUID oluştur",
|
||||||
"generator.advancement": "Başarım",
|
"generator.advancement": "Başarım",
|
||||||
"generator.atlas": "Atlas",
|
"generator.atlas": "Atlas",
|
||||||
"generator.block_definition": "Blockstate",
|
"generator.block_definition": "Blok Durumu",
|
||||||
"generator.browse_available": "%0% için mevcut oluşturuculara göz at",
|
"generator.browse_available": "%0% için mevcut oluşturuculara göz at",
|
||||||
"generator.chat_type": "Sohbet Türü",
|
"generator.chat_type": "Sohbet Türü",
|
||||||
"generator.damage_type": "Hasar Türü",
|
"generator.damage_type": "Hasar Türü",
|
||||||
@@ -99,8 +99,8 @@
|
|||||||
"generator.worldgen/configured_surface_builder": "Yüzey Yapıcı",
|
"generator.worldgen/configured_surface_builder": "Yüzey Yapıcı",
|
||||||
"generator.worldgen/density_function": "Yoğunluk Fonsiyonu",
|
"generator.worldgen/density_function": "Yoğunluk Fonsiyonu",
|
||||||
"generator.worldgen/flat_level_generator_preset": "Düz Dünya Ön Ayarı",
|
"generator.worldgen/flat_level_generator_preset": "Düz Dünya Ön Ayarı",
|
||||||
"generator.worldgen/noise": "Noise",
|
"generator.worldgen/noise": "Kalabalık (Noise)",
|
||||||
"generator.worldgen/noise_settings": "Noise Ayarları",
|
"generator.worldgen/noise_settings": "Kalabalık (Noise) Ayarları",
|
||||||
"generator.worldgen/placed_feature": "Koyulmuş Özellik",
|
"generator.worldgen/placed_feature": "Koyulmuş Özellik",
|
||||||
"generator.worldgen/processor_list": "İşleyici Listesi",
|
"generator.worldgen/processor_list": "İşleyici Listesi",
|
||||||
"generator.worldgen/structure": "Yapı",
|
"generator.worldgen/structure": "Yapı",
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
"preview.min_y": "Min Y",
|
"preview.min_y": "Min Y",
|
||||||
"preview.offset": "Offset",
|
"preview.offset": "Offset",
|
||||||
"preview.peaks": "Peakler",
|
"preview.peaks": "Peakler",
|
||||||
"preview.scale": "Boyut",
|
"preview.scale": "Boyut (Evren)",
|
||||||
"preview.weather": "Hava",
|
"preview.weather": "Hava",
|
||||||
"preview.weather.clear": "Açık",
|
"preview.weather.clear": "Açık",
|
||||||
"preview.weather.rain": "Yağmur",
|
"preview.weather.rain": "Yağmur",
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
"title.changelog": "Teknik Değim Kaydı",
|
"title.changelog": "Teknik Değim Kaydı",
|
||||||
"title.customized": "Özelleştirilmiş Dünyalar",
|
"title.customized": "Özelleştirilmiş Dünyalar",
|
||||||
"title.generator": "%0% Oluşturucu",
|
"title.generator": "%0% Oluşturucu",
|
||||||
"title.generator_category": "%0% Oluşturucu",
|
"title.generator_category": "%0% Oluşturucuları",
|
||||||
"title.generators": "Veri Paketi Oluşturucuları",
|
"title.generators": "Veri Paketi Oluşturucuları",
|
||||||
"title.guides": "Veri Paketi Rehberleri",
|
"title.guides": "Veri Paketi Rehberleri",
|
||||||
"title.home": "Veri Paketi Oluşturucuları",
|
"title.home": "Veri Paketi Oluşturucuları",
|
||||||
@@ -254,10 +254,10 @@
|
|||||||
"transformation.rotation_mode": "Format: %0%",
|
"transformation.rotation_mode": "Format: %0%",
|
||||||
"transformation.rotation_mode.axis_angle": "Eksen-açı",
|
"transformation.rotation_mode.axis_angle": "Eksen-açı",
|
||||||
"transformation.rotation_mode.quaternion": "Kuaterniyon",
|
"transformation.rotation_mode.quaternion": "Kuaterniyon",
|
||||||
"transformation.scale": "Boyut",
|
"transformation.scale": "Boyut (Scale)",
|
||||||
"transformation.translation": "Konum",
|
"transformation.translation": "Konum",
|
||||||
"undo": "Geri Al",
|
"undo": "Geri Al",
|
||||||
"version_diff.word_wrap": "Word wrap",
|
"version_diff.word_wrap": "Dünya Yamulması",
|
||||||
"versions.all": "Bütün sürümler",
|
"versions.all": "Bütün sürümler",
|
||||||
"versions.article": "Makale",
|
"versions.article": "Makale",
|
||||||
"versions.changelog": "Teknik değişiklikler",
|
"versions.changelog": "Teknik değişiklikler",
|
||||||
@@ -283,10 +283,110 @@
|
|||||||
"whats_new.description": "misode.github.io'daki en son gelişmelerden haberdar ol. En son eklenen özellikler için aşağıyı okuyun.",
|
"whats_new.description": "misode.github.io'daki en son gelişmelerden haberdar ol. En son eklenen özellikler için aşağıyı okuyun.",
|
||||||
"whats_new.new": "YENİ",
|
"whats_new.new": "YENİ",
|
||||||
"wiki": "Wiki",
|
"wiki": "Wiki",
|
||||||
"worldgen": "Worldgen",
|
"worldgen": "Dünya Oluşumu (Worldgen)",
|
||||||
"y": "Y",
|
"y": "Y",
|
||||||
"z": "Z",
|
"z": "Z",
|
||||||
"zoom_in": "Yakınlaştır",
|
"zoom_in": "Yakınlaştır",
|
||||||
"zoom_in_limit": "Daha fazla yakınlaştırılamaz\n1 piksel = 4 blok",
|
"zoom_in_limit": "Daha fazla yakınlaştırılamaz\n1 piksel = 4 blok",
|
||||||
"zoom_out": "Uzaklaştır"
|
"zoom_out": "Uzaklaştır",
|
||||||
|
"changelog.edit_on_github": "Teknik değişimleri github'da düzenle",
|
||||||
|
"add_key": "Anahtar ekle",
|
||||||
|
"convert.format.item-modifier": "Eşya düzenleyicisi",
|
||||||
|
"convert.format.recipe-output": "Tarif Ürünü",
|
||||||
|
"convert.select": "-- seç --",
|
||||||
|
"format.snbt": "SNBT",
|
||||||
|
"generator.cat_variant": "Kedi Türü",
|
||||||
|
"generator.ad_astra:planets": "Ad Astra Gezegeni",
|
||||||
|
"generator.banner_pattern": "Flama Deseni",
|
||||||
|
"generator.chicken_variant": "Tavuk Türü",
|
||||||
|
"generator.cow_variant": "İnek Türü",
|
||||||
|
"generator.create:recipes": "Create Tarifleri",
|
||||||
|
"generator.dialog": "Diyalog",
|
||||||
|
"generator.enchantment": "Büyüleme",
|
||||||
|
"generator.enchantment_provider": "Büyüleme Sağlayıcısı",
|
||||||
|
"generator.equipment": "Araç Gereç",
|
||||||
|
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
||||||
|
"generator.fabric:dependency_overrides": "fabric_yükleyici_gereksinimleri.json",
|
||||||
|
"generator.frog_variant": "Kurbağa Türü",
|
||||||
|
"generator.immersive_weathering:block_growth": "Blok Büyümesi",
|
||||||
|
"generator.instrument": "Enstrüman",
|
||||||
|
"generator.item_definition": "Eşya",
|
||||||
|
"generator.jukebox_song": "Muzik Kutusu Şarkısı",
|
||||||
|
"generator.lang": "Dil",
|
||||||
|
"generator.loot-table-modifier:loot_modifier": "Ganimet Değiştiricisi",
|
||||||
|
"generator.texture_meta": "Doku Üstverisi (Metadata)",
|
||||||
|
"generator.neoforge:biome_modifier": "Biyom Değiştiricisi",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "Kabul Edilebilir Köylü Uzaklık Data Haritası",
|
||||||
|
"generator.neoforge:data_map_compostables": "Gübreleştirilebilirler Data Haritası",
|
||||||
|
"generator.neoforge:data_map_furnace_fuels": "Fırın Yakıtı Data haritası",
|
||||||
|
"generator.neoforge:data_map_monster_room_mobs": "Canavar Odası Mob Data Hartiası",
|
||||||
|
"generator.neoforge:data_map_oxidizables": "Paslanabilirler Data Haritası",
|
||||||
|
"generator.neoforge:data_map_parrot_imitations": "Papağan Taklit Data Haritası",
|
||||||
|
"generator.neoforge:data_map_raid_hero_gifts": "Baskın Kahramanı (Köyün kahramanı) Ödülleri Data Haritası",
|
||||||
|
"generator.neoforge:data_map_strippables": "Soyulabilirler Data Hartiası",
|
||||||
|
"generator.neoforge:data_map_vibration_frequencies": "Titreme Frekansı Data Haritası",
|
||||||
|
"generator.neoforge:data_map_villager_types": "Biyom Köylü Türleri Data Haritası",
|
||||||
|
"generator.neoforge:data_map_waxables": "Bal Mumuyla Cilalanabilirler Data Haritası",
|
||||||
|
"generator.neoforge:structure_modifier": "Yapı Değiştiricisi",
|
||||||
|
"generator.ohthetreesyoullgrow:configured_feature": "OTTYG Özelliği",
|
||||||
|
"generator.sky_aesthetics:sky": "Değiştirilebilir Gök Yüzü",
|
||||||
|
"generator.painting_variant": "Tablo Türü",
|
||||||
|
"generator.pig_variant": "Domuz Türü",
|
||||||
|
"generator.post_effect": "Efekt Sonrası",
|
||||||
|
"generator.tag/dialog": "Diyalog Etiketi",
|
||||||
|
"generator.tag/enchantment": "Büyüleme Etiketi",
|
||||||
|
"generator.tag/timeline": "Zaman Çizelgesi Etiketi",
|
||||||
|
"generator.tag/trade_set": "Takas Seti Etiketi",
|
||||||
|
"generator.tag/villager_trade": "Köylü Takası Etiketi",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "Zombi Nautilus Türü Tagı",
|
||||||
|
"generator.test_instance": "Deneme Durumu",
|
||||||
|
"generator.test_environment": "Deneme Ortamı",
|
||||||
|
"generator.thermoo:environment_provider": "Ortam Sağlayıcısı",
|
||||||
|
"generator.thermoo:environment": "Ortam",
|
||||||
|
"generator.thermoo:temperature_effect": "Sıcaklık Efekti",
|
||||||
|
"generator.thermoo:predicate": "Thermoo Predicateları",
|
||||||
|
"generator.timeline": "Zaman Çizelgesi",
|
||||||
|
"generator.pixelmon:raid_ally_set": "Pixelmon Baskın Müttefiği Seti",
|
||||||
|
"generator.pixelmon:raid_spawn_set": "Pixelmon Baskın Spawn Seti",
|
||||||
|
"generator.pixelmon:spawn_replacement": "Pixelmon Spawn Yedeği",
|
||||||
|
"convert.format.loot-table": "Ganimet Tablosu",
|
||||||
|
"generator.pixelmon:type": "Pixelmon Türü",
|
||||||
|
"generator.pixelmon:growth": "Pixelmon Büyüme",
|
||||||
|
"generator.pixelmon:interaction_event": "Pixelmon Etkileşim Eventi",
|
||||||
|
"generator.pixelmon:research": "Pixelmon Araştırma",
|
||||||
|
"generator.pixelmon:research_trigger": "Pixelmon Araştırma Tetikleyicisi",
|
||||||
|
"generator.pixelmon:npc_preset": "Pixelmon NPC Ön Ayarı",
|
||||||
|
"generator.pixelmon:pokedex": "Lügat-ı Poke",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "Lügat-ı Poke Tetikleyicisi",
|
||||||
|
"generator.pixelmon:pokedex_region": "Alan",
|
||||||
|
"generator.trade_set": "Takas Seti",
|
||||||
|
"generator.trial_spawner": "Yargı Spawnlayıcısı",
|
||||||
|
"generator.villager_trade": "Köylü Takası",
|
||||||
|
"generator.wolf_variant": "Kurt Türü",
|
||||||
|
"generator.wolf_sound_variant": "Kürt Ses Türü",
|
||||||
|
"generator.zombie_nautilus_variant": "Zombi Nautilus Türü",
|
||||||
|
"generators.partners": "Modlu Oluşturucuları",
|
||||||
|
"inline": "Inline",
|
||||||
|
"missing_key": "%0% Anahtarı Gerekiyor",
|
||||||
|
"partner.ad_astra": "Ad Astra",
|
||||||
|
"partner.create": "Create",
|
||||||
|
"partner.fabric": "Fabric",
|
||||||
|
"partner.lithostitched": "Lithostitched",
|
||||||
|
"partner.loot-table-modifier": "Ganimet Tablosu Değiştiricisi",
|
||||||
|
"partner.neoforge": "NeoForge",
|
||||||
|
"partner.obsidian": "Obsidian",
|
||||||
|
"partner.ohthetreesyoullgrow": "Oh The Trees You'll Grow",
|
||||||
|
"partner.sky_aesthetics": "Sky Aesthetics",
|
||||||
|
"partner.thermoo": "Thermoo",
|
||||||
|
"partner.pixelmon": "Pixelmon",
|
||||||
|
"versions.wiki": "Wiki",
|
||||||
|
"unset": "ayarlanmamış",
|
||||||
|
"title.convert": "Dönüştürücü",
|
||||||
|
"title.convert.formats": "%0% versiyonundan %1% versiyonuna Değiştirici",
|
||||||
|
"sort_alphabetically": "Alfabetik Sırala",
|
||||||
|
"root": "Kök",
|
||||||
|
"presets.no_results": "Ön Ayar Yok",
|
||||||
|
"presets.no_results_for_query": "Bu Sorgulama İçin Ön Ayar Yok",
|
||||||
|
"convert.format.give-command": "/give",
|
||||||
|
"convert.swap": "Değiştir"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,7 +141,7 @@
|
|||||||
"no_presets": "无预设",
|
"no_presets": "无预设",
|
||||||
"not_found.description": "你所查找的页面不存在。",
|
"not_found.description": "你所查找的页面不存在。",
|
||||||
"output_settings": "输出设置",
|
"output_settings": "输出设置",
|
||||||
"partner.immersive_weathering": "沉浸式风化(Immersive Weathering)",
|
"partner.immersive_weathering": "沉浸式风化",
|
||||||
"presets": "预设",
|
"presets": "预设",
|
||||||
"preview": "可视化",
|
"preview": "可视化",
|
||||||
"preview.auto_scroll": "自动滚动",
|
"preview.auto_scroll": "自动滚动",
|
||||||
@@ -222,7 +222,7 @@
|
|||||||
"title.guides": "数据包指南",
|
"title.guides": "数据包指南",
|
||||||
"title.home": "数据包生成器",
|
"title.home": "数据包生成器",
|
||||||
"title.new_project": "创建新的项目",
|
"title.new_project": "创建新的项目",
|
||||||
"title.partners": "第三方模组的生成器",
|
"title.partners": "模组扩展数据包生成器",
|
||||||
"title.project": "%0% 项目",
|
"title.project": "%0% 项目",
|
||||||
"title.sounds": "音效浏览器",
|
"title.sounds": "音效浏览器",
|
||||||
"title.versions": "版本浏览器",
|
"title.versions": "版本浏览器",
|
||||||
@@ -260,7 +260,7 @@
|
|||||||
"weight": "权重",
|
"weight": "权重",
|
||||||
"convert.format.item-modifier": "物品修饰器",
|
"convert.format.item-modifier": "物品修饰器",
|
||||||
"convert.swap": "交换",
|
"convert.swap": "交换",
|
||||||
"versions.fixes.no_results": "",
|
"versions.fixes.no_results": "无修复版",
|
||||||
"changelog.edit_on_github": "在 GitHub 上编辑技术性更改",
|
"changelog.edit_on_github": "在 GitHub 上编辑技术性更改",
|
||||||
"preview.daytime": "游戏时间刻",
|
"preview.daytime": "游戏时间刻",
|
||||||
"whats_new.description": "关注 misode.github.io 上的所有最新开发进展。阅读下文了解最近添加了哪些功能。",
|
"whats_new.description": "关注 misode.github.io 上的所有最新开发进展。阅读下文了解最近添加了哪些功能。",
|
||||||
@@ -302,17 +302,17 @@
|
|||||||
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
"generator.fabric:fabric_mod_json": "fabric.mod.json",
|
||||||
"convert.format.give-command": "/give",
|
"convert.format.give-command": "/give",
|
||||||
"mode.3d": "3D",
|
"mode.3d": "3D",
|
||||||
"generator.create:recipes": "创建配方",
|
"generator.create:recipes": "机械动力配方",
|
||||||
"generator.dialog": "对话框",
|
"generator.dialog": "对话框",
|
||||||
"generator.texture_meta": "纹理元数据",
|
"generator.texture_meta": "纹理元数据",
|
||||||
"generator.sky_aesthetics:sky": "自定义天空",
|
"generator.sky_aesthetics:sky": "自定义天空",
|
||||||
"generator.tag/dialog": "对话框标签",
|
"generator.tag/dialog": "对话框标签",
|
||||||
"generator.wolf_sound_variant": "狼音效变种",
|
"generator.wolf_sound_variant": "狼音效变种",
|
||||||
"inline": "内联",
|
"inline": "内联",
|
||||||
"partner.create": "创建",
|
"partner.create": "机械动力",
|
||||||
"partner.fabric": "Fabric",
|
"partner.fabric": "Fabric",
|
||||||
"partner.neoforge": "NeoForge",
|
"partner.neoforge": "NeoForge",
|
||||||
"partner.obsidian": "黑曜石",
|
"partner.obsidian": "Obsidian模组",
|
||||||
"preview.height": "高度",
|
"preview.height": "高度",
|
||||||
"generator.test_environment": "测试环境",
|
"generator.test_environment": "测试环境",
|
||||||
"generator.test_instance": "测试实例",
|
"generator.test_instance": "测试实例",
|
||||||
@@ -349,7 +349,7 @@
|
|||||||
"preview.min_y": "最小 Y 坐标",
|
"preview.min_y": "最小 Y 坐标",
|
||||||
"generator.thermoo:environment": "环境",
|
"generator.thermoo:environment": "环境",
|
||||||
"generator.thermoo:environment_provider": "环境提供者",
|
"generator.thermoo:environment_provider": "环境提供者",
|
||||||
"generator.ohthetreesyoullgrow:configured_feature": "OTTYG特性(译者注:OTTYG是什么?)",
|
"generator.ohthetreesyoullgrow:configured_feature": "OTTYG地物",
|
||||||
"generator.immersive_weathering:block_growth": "方块生长",
|
"generator.immersive_weathering:block_growth": "方块生长",
|
||||||
"generator.neoforge:data_map_monster_room_mobs": "刷怪笼怪物数据表",
|
"generator.neoforge:data_map_monster_room_mobs": "刷怪笼怪物数据表",
|
||||||
"generator.neoforge:data_map_raid_hero_gifts": "村庄英雄奖励配置",
|
"generator.neoforge:data_map_raid_hero_gifts": "村庄英雄奖励配置",
|
||||||
@@ -358,5 +358,34 @@
|
|||||||
"generator.neoforge:data_map_oxidizables": "可氧化方块数据表",
|
"generator.neoforge:data_map_oxidizables": "可氧化方块数据表",
|
||||||
"generator.neoforge:data_map_parrot_imitations": "鹦鹉模仿怪物声音数据",
|
"generator.neoforge:data_map_parrot_imitations": "鹦鹉模仿怪物声音数据",
|
||||||
"contributor.infrastructure": "基础设施",
|
"contributor.infrastructure": "基础设施",
|
||||||
"cutoff": "截止时间"
|
"cutoff": "截止时间",
|
||||||
|
"generator.thermoo:temperature_effect": "温度效果",
|
||||||
|
"generator.thermoo:predicate": "Thermoo谓词",
|
||||||
|
"partner.ohthetreesyoullgrow": "Oh The Trees You'll Grow",
|
||||||
|
"generator.ad_astra:planets": "Ad Astra 星球",
|
||||||
|
"generator.neoforge:data_map_acceptable_villager_distances": "村民探测距离数据映射表",
|
||||||
|
"generator.neoforge:data_map_villager_types": "村民群系类别数据映射表",
|
||||||
|
"generator.pixelmon:spawn_replacement": "像素宝可梦 生成取代规则",
|
||||||
|
"versions.diff": "mcmeta 差异",
|
||||||
|
"presets.no_results_for_query": "当前查询条件没有预设",
|
||||||
|
"partner.pixelmon": "像素宝可梦",
|
||||||
|
"partner.thermoo": "Thermoo",
|
||||||
|
"generator.pixelmon:pokedex_trigger": "图鉴触发器",
|
||||||
|
"generator.pixelmon:pokedex": "宝可梦图鉴",
|
||||||
|
"generator.pixelmon:npc_preset": "像素宝可梦NPC预设",
|
||||||
|
"generator.pixelmon:research_trigger": "像素宝可梦田野调查触发器",
|
||||||
|
"generator.pixelmon:research": "像素宝可梦田野调查",
|
||||||
|
"generator.pixelmon:interaction_event": "像素宝可梦交互事件",
|
||||||
|
"generator.pixelmon:growth": "像素宝可梦体型",
|
||||||
|
"generator.pixelmon:type": "像素宝可梦属性",
|
||||||
|
"partner.ad_astra": "Ad Astra模组",
|
||||||
|
"partner.lithostitched": "Lithostitched库模组",
|
||||||
|
"partner.sky_aesthetics": "Sky Aesthetics库模组",
|
||||||
|
"generator.tag/timeline": "时间线标签",
|
||||||
|
"generator.timeline": "时间线",
|
||||||
|
"generator.pixelmon:pokedex_region": "区域",
|
||||||
|
"generator.neoforge:data_map_strippables": "可去皮原木数据映射表",
|
||||||
|
"generator.tag/zombie_nautilus_variant": "僵尸鹦鹉螺标签",
|
||||||
|
"generator.zombie_nautilus_variant": "僵尸鹦鹉螺",
|
||||||
|
"version_diff.word_wrap": "自动换行"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user