Yarn: λͺ…λͺ…λœ 항아리λ₯Ό μƒμ„±ν•˜λŠ” μžλ™ν™”λœ 방법

에 λ§Œλ“  2021λ…„ 04μ›” 02일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: FabricMC/yarn

μ•ˆλ…•ν•˜μ„Έμš”,
PixLyzer λΌλŠ” 도ꡬλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. < 1.14.4 μ—λŠ” μ–€ 맀핑을 μ‚¬μš©ν•˜κ³  1.14.4 +μ—λŠ” mojang 맀핑을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ €λŠ” μ›λž˜μ˜ 것보닀 μ–€ 맀핑을 훨씬 더 μ’‹μ•„ν•©λ‹ˆλ‹€.

λ‚΄ λ¬Έμ œλŠ” λ‚΄ μŠ€ν¬λ¦½νŠΈμ— λͺ…λͺ…λœ jar 톡합을 톡합해야 ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΅œμ‹  버전과 21w13a 와 1.14.4 μ‚¬μ΄μ˜ λͺ¨λ“  버전에 λŒ€ν•΄ μˆ˜λ™μœΌλ‘œ 원사 항아리λ₯Ό 생성할 μ‹œκ°„μ΄ μ—†μŠ΅λ‹ˆλ‹€. 이전 맀핑을 μƒμ„±ν•˜κΈ° μœ„ν•œ λ§ˆμ§€λ§‰ μ‹œλ„λŠ” 1.14.4? λ₯Ό μ²΄ν¬μ•„μ›ƒν•˜κ³  https://github.com/FabricMC/yarn/blob/21w13a/build.gradle#L29μ—μ„œ λ§ˆμΈν¬λž˜ν”„νŠΈ 버전을 λ³€κ²½ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. 이전 버전은 gradle이 ν˜Έν™˜λ˜μ§€ μ•Šκ±°λ‚˜ mapNamedJar κ°€ μ—†μŠ΅λ‹ˆλ‹€.

이전 버전에 λŒ€ν•œ 맀핑을 μžλ™μœΌλ‘œ μƒμ„±ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? (이 말은 gradle mapNamedJar 1.15.2 와 같은 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

감사 ν•΄μš”

discussion toolchain

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•,

μž‘μ€ 리맀퍼λ₯Ό μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ λ§€ν•‘μœΌλ‘œ 항아리λ₯Ό λ‹€μ‹œ 맀핑할 수 μžˆμŠ΅λ‹ˆλ‹€.

https://maven.fabricmc.net/net/fabricmc/tiny-remapper/0.3.2/ μ—μ„œ λ‹€μš΄λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€(cliλ₯Ό 톡해 μ‚¬μš©ν•˜λ €λŠ” 경우 fat jar μ‚¬μš©).
λ‹€μŒμ—μ„œ μž‘μ€ ν˜•μ‹μ˜ 원사λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. https://maven.fabricmc.net/net/fabricmc/yarn/ (none v2 jar λ˜λŠ” gz 파일이 이전 κ²Œμž„ 버전에 κ°€μž₯ 적합함)

Tiny reampperλŠ” μ½”λ“œμ—μ„œ 직접 ν˜ΈμΆœν•˜λ €λŠ” κ²½μš°μ—λ„ APIκ°€ μžˆμŠ΅λ‹ˆλ‹€(maven을 톡해 κ°€μ Έμ˜€κΈ°λ§Œ ν•˜λ©΄ 됨). λ‹€μŒ 예제둜 mapNamedJarλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. https://github.com/FabricMC/yarn/blob/21w13a/build.gradle#L1050

도ꡬ가 λ§ˆμΈν¬λž˜ν”„νŠΈμ™€ μ‚¬μš©ν•˜λ €λŠ” 원사 버전을 λ‹€μš΄λ‘œλ“œν•˜λ„λ‘ ν•œ λ‹€μŒ μž‘μ€ 리맀퍼λ₯Ό ν˜ΈμΆœν•˜λŠ” λ¬Έμ œμ—¬μ•Ό ν•©λ‹ˆλ‹€.

λͺ¨λ“  5 λŒ“κΈ€

μ•ˆλ…•,

μž‘μ€ 리맀퍼λ₯Ό μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ λ§€ν•‘μœΌλ‘œ 항아리λ₯Ό λ‹€μ‹œ 맀핑할 수 μžˆμŠ΅λ‹ˆλ‹€.

https://maven.fabricmc.net/net/fabricmc/tiny-remapper/0.3.2/ μ—μ„œ λ‹€μš΄λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€(cliλ₯Ό 톡해 μ‚¬μš©ν•˜λ €λŠ” 경우 fat jar μ‚¬μš©).
λ‹€μŒμ—μ„œ μž‘μ€ ν˜•μ‹μ˜ 원사λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€. https://maven.fabricmc.net/net/fabricmc/yarn/ (none v2 jar λ˜λŠ” gz 파일이 이전 κ²Œμž„ 버전에 κ°€μž₯ 적합함)

Tiny reampperλŠ” μ½”λ“œμ—μ„œ 직접 ν˜ΈμΆœν•˜λ €λŠ” κ²½μš°μ—λ„ APIκ°€ μžˆμŠ΅λ‹ˆλ‹€(maven을 톡해 κ°€μ Έμ˜€κΈ°λ§Œ ν•˜λ©΄ 됨). λ‹€μŒ 예제둜 mapNamedJarλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. https://github.com/FabricMC/yarn/blob/21w13a/build.gradle#L1050

도ꡬ가 λ§ˆμΈν¬λž˜ν”„νŠΈμ™€ μ‚¬μš©ν•˜λ €λŠ” 원사 버전을 λ‹€μš΄λ‘œλ“œν•˜λ„λ‘ ν•œ λ‹€μŒ μž‘μ€ 리맀퍼λ₯Ό ν˜ΈμΆœν•˜λŠ” λ¬Έμ œμ—¬μ•Ό ν•©λ‹ˆλ‹€.

@modmuss50 (맀우 λΉ λ₯Έ) 닡변에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. ν™•μ‹€νžˆ μ‹œλ„ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. μŠ¬ν”„κ²Œλ„ λ‚˜λŠ” λ§ˆμ§€λ§‰ 날에 λŒ€λ‹΅ν•  μ‹œκ°„μ΄ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”,
λ‹€λ₯Έ μ§ˆλ¬Έμ„ λ°›μ•˜μŠ΅λ‹ˆλ‹€.

( 21w13a 버전을 μ‚¬μš©ν•˜κ³  κ³΅μ‹μ—μ„œ λͺ…λͺ…μœΌλ‘œ λ§€ν•‘ν•˜λ €λŠ” 경우):

μž‘μ€ 리맀퍼λ₯Ό μ‚¬μš©ν•˜μ—¬ offical μ—μ„œ intermediary 둜 맀핑할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄κ²ƒμœΌλ‘œ λͺ¨λ“  것이 μ’‹μŠ΅λ‹ˆλ‹€. 이제 intermediary μ—μ„œ named 둜 λ§€ν•‘ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 21w13a λ₯Ό μ²΄ν¬μ•„μ›ƒν•˜κ³  $# gradle mapNamedJar $λ₯Ό μ‹€ν–‰ν•˜λ©΄ μž„μ‹œ 폴더에 merge-v2.tiny λΌλŠ” 파일이 ν‘œμ‹œλ©λ‹ˆλ‹€. 이 νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  리맀퍼λ₯Ό μ‹€ν–‰ν•˜λ©΄ λͺ¨λ“  것이 정상이고 μ΅μˆ™ν•œ 항아리가 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. maven의 원사 맀핑을 μ‚¬μš©ν•  λ•Œ(무엇이든 λ³‘ν•©λœ v2, ...) λŒ€λΆ€λΆ„μ˜ 클래슀λ₯Ό λͺ…λͺ…λœ 이름에 맀핑할 수 μžˆμ§€λ§Œ 일뢀(예: net/minecraft/class_6171 )λŠ” 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. 이름이 λ°”λ€Œμ—ˆμŠ΅λ‹ˆλ‹€. 맀핑을 ν™•μΈν•˜κ³  이 클래슀 이후에 greppingν•  λ•Œ λ‹€μŒ 좜λ ₯을 μ–»μŠ΅λ‹ˆλ‹€.

moritz@moritz-tp:~/yarn$ grep -r "net/minecraft/class_6171"
mappings/net/minecraft/unused/packageinfo/PackageInfo6171.mapping:CLASS net/minecraft/class_6171 net/minecraft/unused/packageinfo/PackageInfo6171 
.gradle/temp/yarn-mappings-v2.tiny:c    net/minecraft/class_6171        net/minecraft/unused/packageinfo/PackageInfo6171
.gradle/temp/yarn-mappings.tiny:CLASS   net/minecraft/class_6171        net/minecraft/unused/packageinfo/PackageInfo6171
.gradle/temp/unmerged-named-v2-with-enum.tiny:c net/minecraft/class_6171        net/minecraft/unused/packageinfo/PackageInfo6171
.gradle/temp/merged-reordered-v2.tiny:c dlr     net/minecraft/class_6171        net/minecraft/unused/packageinfo/PackageInfo6171
.gradle/temp/merged-v2.tiny:c   net/minecraft/class_6171        dlr     net/minecraft/unused/packageinfo/PackageInfo6171
.gradle/minecraft/21w13a-intermediary-inverted-v2.tiny:c        net/minecraft/class_6171        dlr
.gradle/minecraft/21w13a-intermediary.tiny:CLASS        dlr     net/minecraft/class_6171
.gradle/minecraft/21w13a-intermediary-v2.tiny:c dlr     net/minecraft/class_6171


moritz@moritz-tp:~/test$ grep -r "net/minecraft/class_6171"
Übereinstimmungen in BinÀrdatei intermediary.jar
Übereinstimmungen in BinÀrdatei yarn.jar
intermediary.tiny:c     dlr     net/minecraft/class_6171

λ”°λΌμ„œ λͺ…λͺ…λœ 맀핑을 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. maven의 맀핑이 λ‹€λ₯΄κ±°λ‚˜ λ‚΄κ°€ 잘λͺ»ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

타이

(μž‘μ€ νŽΈμ§‘μ€ μ’‹μŠ΅λ‹ˆλ‹€. 였래된 μž‘μ€ 맀핑을 μ‚¬μš©ν–ˆμ§€λ§Œ μ—¬μ „νžˆ: net/minecraft/class_5348$1 클래슀 확인)

v2μ—λŠ” μ€‘κ°œ 이름이 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ―€λ‘œ mavenμ—μ„œ λ³„λ„λ‘œ λ‹€μš΄λ‘œλ“œν•˜κ³  맀핑을 κ²°ν•©ν•˜κ±°λ‚˜ 곡식 -> μ€‘κ°œ -> λͺ…λͺ…μœΌλ‘œ 이동해야 ν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ¬Έμ œμ—†μ΄ κ³΅μ‹μ—μ„œ μ€‘κ°œμžμ—κ²Œ 맀핑 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. maven(https://maven.fabricmc.net/net/fabricmc/yarn/)의 v2 λ˜λŠ” v1을 μ‚¬μš©ν•˜μ§€λ§Œ 이 클래슀의 이름은 어디에도 μ—†μŠ΅λ‹ˆλ‹€. 그것이 문제이며 μ „ν˜€ λ§€ν•‘λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것이 μ•„λ‹™λ‹ˆλ‹€(거의 λͺ¨λ“  것이 맀핑됨)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

asiekierka picture asiekierka  Β·  3μ½”λ©˜νŠΈ

enbrain picture enbrain  Β·  4μ½”λ©˜νŠΈ

Boundarybreaker picture Boundarybreaker  Β·  3μ½”λ©˜νŠΈ

Draylar picture Draylar  Β·  6μ½”λ©˜νŠΈ

Sollace picture Sollace  Β·  5μ½”λ©˜νŠΈ