17 Commits

Author SHA1 Message Date
Misode
361921cf34 Add 26.2
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
2026-04-15 01:31:51 +02:00
SpyglassCrafter
9c16455eae Translated using Weblate (Russian)
Currently translated at 100.0% (388 of 388 strings)

Translated using Weblate (Russian)

Currently translated at 98.9% (383 of 387 strings)

Translated using Weblate (Russian)

Currently translated at 98.9% (383 of 387 strings)

Translated using Weblate (Russian)

Currently translated at 98.9% (383 of 387 strings)

Co-authored-by: JohannMeneka <johannmeneka@users.noreply.weblate.spyglassmc.com>
Co-authored-by: Phil <phizlip@users.noreply.weblate.spyglassmc.com>
Co-authored-by: SpyglassCrafter <bot@spyglassmc.com>
Co-authored-by: TrRuki <TrRuki.mail@gmail.com>
Co-authored-by: Wertyfire <wertyfire@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/ru/
Translation: Misode's Data Pack Generators/Web App
2026-04-15 01:30:26 +02:00
Misode
0eec3753b4 Update some dependencies
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
2026-04-07 15:53:22 +02:00
Misode
88ce717726 Use 26.1.1 ref instead of latest snapshot 2026-04-07 14:33:27 +02:00
Misode
888f3ae341 Update version regexes
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
2026-03-23 20:57:22 +01:00
SpyglassCrafter
59a5321bf9 Translated using Weblate (French)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Currently translated at 98.9% (383 of 387 strings)

Co-authored-by: Ysuzen <ysuzen@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/fr/
Translation: Misode's Data Pack Generators/Web App
2026-03-22 21:06:21 +00:00
YukiSugar
06ae1f5c0e Fix minecraft wiki links (#853)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
2026-03-13 18:35:08 +01:00
SpyglassCrafter
319cfe6044 Translated using Weblate (Turkish)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Currently translated at 100.0% (387 of 387 strings)

Co-authored-by: Appycake <appycake@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/tr/
Translation: Misode's Data Pack Generators/Web App
2026-03-05 06:06:21 +00:00
SpyglassCrafter
307e6dc46c Translated using Weblate (German)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Currently translated at 99.2% (385 of 388 strings)

Co-authored-by: Paulantis <paulantis@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/de/
Translation: Misode's Data Pack Generators/Web App
2026-03-03 08:06:20 +00:00
Misode
c2b5529a60 Link directly to mojira.dev filtered issue list
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
2026-02-24 21:57:35 +01:00
SpyglassCrafter
9540a46e78 Translated using Weblate (Japanese)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Currently translated at 91.7% (356 of 388 strings)

Co-authored-by: FireSepicHub-14 <firesepichub-14@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/ja/
Translation: Misode's Data Pack Generators/Web App
2026-02-15 15:06:20 +00:00
SpyglassCrafter
271cab4c24 Translated using Weblate (Russian)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Currently translated at 98.4% (382 of 388 strings)

Co-authored-by: alexeykasp <alexeykasp@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/ru/
Translation: Misode's Data Pack Generators/Web App
2026-02-08 09:06:19 +00:00
SpyglassCrafter
c68ba4faea Translated using Weblate (Spanish)
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Currently translated at 60.6% (234 of 386 strings)

Co-authored-by: Cristian Valderrama <cris2405@users.noreply.weblate.spyglassmc.com>
Translate-URL: https://weblate.spyglassmc.com/projects/misode-github-io/web-app/es/
Translation: Misode's Data Pack Generators/Web App
2026-02-05 17:06:19 +00:00
Misode
39f4ecc504 Fix #824 noise settings preview in 1.18
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
2026-02-01 00:16:10 +01:00
Misode
f243be3d5e Fix #832 enchant_with_levels loot preview 2026-02-01 00:07:09 +01:00
Misode
84028a06f1 Add basic support for crafting_dye and crafting_imbue 2026-01-31 23:27:56 +01:00
Misode
ef17f8a5e5 Fix mcdoc version filters for 26.1 2026-01-31 22:14:40 +01:00
23 changed files with 1049 additions and 755 deletions

View File

@@ -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.9', 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',

683
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -29,7 +29,7 @@
"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", "dompurify": "^3.2.6",
"highlight.js": "^11.5.1", "highlight.js": "^11.5.1",
"howler": "^2.2.3", "howler": "^2.2.3",

View File

@@ -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
} }
} }

View File

@@ -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')
@@ -817,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)

View File

@@ -49,6 +49,35 @@ export function placeItems(version: VersionId, recipe: any, animation: number, i
const choice = materials[animation % materials.length] const choice = materials[animation % materials.length]
items.set('crafting.1', choice) 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') { } else if (type === 'smelting' || type === 'smoking' || type === 'blasting' || type === 'campfire_cooking') {
const choices = allIngredientChoices(version, recipe.ingredient, itemTags) const choices = allIngredientChoices(version, recipe.ingredient, itemTags)
if (choices.length > 0) { if (choices.length > 0) {

View File

@@ -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>
}

View File

@@ -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>
}

View File

@@ -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
}

View File

@@ -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'

View File

@@ -1,77 +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+)?)-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
}

View File

@@ -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,

View File

@@ -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 }
} }

View File

@@ -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', '1.21.11', '26.1'] 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.11' 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)

View File

@@ -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'

View File

@@ -212,9 +212,16 @@
}, },
{ {
"id": "26.1", "id": "26.1",
"ref": "26.1.1",
"name": "26.1",
"pack_format": 101,
"show": true
},
{
"id": "26.2",
"dynamic": true, "dynamic": true,
"name": "26.1 (dev)", "name": "26.2",
"pack_format": 95, "pack_format": 102,
"show": true "show": true
} }
], ],
@@ -238,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",
@@ -271,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",
@@ -288,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",
@@ -300,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",
@@ -388,25 +395,26 @@
{ {
"id": "trade_set", "id": "trade_set",
"url": "trade-set", "url": "trade-set",
"minVersion": "26.1" "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",
@@ -420,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",
@@ -462,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",
@@ -476,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",
@@ -512,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",
@@ -739,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",
@@ -754,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",
@@ -762,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",

View File

@@ -384,5 +384,8 @@
"inline": "Inline", "inline": "Inline",
"partner.ad_astra": "Ad Astra", "partner.ad_astra": "Ad Astra",
"generator.neoforge:data_map_acceptable_villager_distances": "Datenkarte akzeptabler Dorfbewohner-Distanzen", "generator.neoforge:data_map_acceptable_villager_distances": "Datenkarte akzeptabler Dorfbewohner-Distanzen",
"generator.neoforge:data_map_villager_types": "Datenkarte von Dorfbewohner-Biom-Typen" "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"
} }

View File

@@ -362,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",

View File

@@ -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"
} }

View File

@@ -381,5 +381,7 @@
"generator.thermoo:predicate": "Prédicats de Thermoo", "generator.thermoo:predicate": "Prédicats de Thermoo",
"generator.timeline": "Chronologie", "generator.timeline": "Chronologie",
"generator.pixelmon:raid_ally_set": "Ensemble d'alliés de Raid Pixelmon", "generator.pixelmon:raid_ally_set": "Ensemble d'alliés de Raid Pixelmon",
"generator.pixelmon:raid_spawn_set": "Ensemble de spawns 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"
} }

View File

@@ -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)"
} }

View File

@@ -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%",
@@ -385,5 +385,16 @@
"generator.pixelmon:pokedex": "Покедекс", "generator.pixelmon:pokedex": "Покедекс",
"generator.pixelmon:pokedex_trigger": "Триггер Покедекса", "generator.pixelmon:pokedex_trigger": "Триггер Покедекса",
"partner.ad_astra": "Ad Astra (К Звёздам!)", "partner.ad_astra": "Ad Astra (К Звёздам!)",
"partner.pixelmon": "Pixelmon" "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": "Набор Торговли"
} }

View File

@@ -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"
} }