Yarn: NoiseChunkGenerator๋Š” net.minecraft.world.gen์— ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2021๋…„ 02์›” 13์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: FabricMC/yarn

java.lang.IllegalAccessError: class net.minecraft.world.gen.chunk.NoiseChunkGenerator tried to access protected method 'double net.minecraft.world.gen.StructureWeightSampler.getWeight(int, int, int)' (net.minecraft.world.gen.chunk.NoiseChunkGenerator and net.minecraft.world.gen.StructureWeightSampler are in unnamed module of loader 'app')

ํ˜„์žฌ NoiseChunkGenerator ์šฉ ํŒจํ‚ค์ง€๊ฐ€ ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Minecraft๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์ด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

bug discussion refactor toolchain

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Mojang์ด ํŠน์ • ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์œ ๋งคํ•‘์— ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ Loader๊ฐ€ ๋” ์ด์ƒ ๊ฐœ๋ฐœ ๋Ÿฐํƒ€์ž„ ํ•ดํ‚น์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๊ณต๊ฐœ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์€ Tiny Remapper๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  16 ๋Œ“๊ธ€

ํ , ์ˆ˜์ˆ˜๊ป˜๋ผ์˜ ํŒจํ‚ค์ง€ ๊ฐ€์‹œ์„ฑ ์ง€์ˆ˜๊ฐ€ ์˜ค๋žซ๋™์•ˆ ์ž‘๋™์„ ๋ฉˆ์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ƒ‰์ธ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ์˜์‹ฌ ์Šค๋Ÿฝ์ง€๋งŒ ๋ช…๋ น ์ค„ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋งคํ•‘ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋ณด์žฅ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์ˆ˜ํ‘œ ๋งคํ•‘์ด ๊นจ์ง€์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋ถ€๋Ÿฌ์ง„ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/FabricMC/yarn/blame/21w06a/build.gradle#L396
์ค‘๊ฐ„ ์šฉ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ ์ด ์ˆ˜ํ‘œ ๋งคํ•‘์€ 2 ๋…„ ์ „ ์ค‘๊ฐ„ ์—…๋ฐ์ดํŠธ ์ดํ›„๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!



ํ˜„์žฌ ๊ฒฐ๊ณผ๋ฅผ๋ณด์‹ญ์‹œ์˜ค.

ERROR: Must be in one package:
net/minecraft/client/gui/screen/ConnectScreen
net/minecraft/client/gui/screen/ConnectScreen$1
net/minecraft/client/gui/screen/CustomizeBuffetLevelScreen
net/minecraft/client/gui/screen/CustomizeBuffetLevelScreen$1
net/minecraft/client/gui/screen/CustomizeBuffetLevelScreen$BuffetBiomesListWidget
net/minecraft/client/gui/screen/CustomizeBuffetLevelScreen$BuffetBiomesListWidget$BuffetBiomeItem
net/minecraft/client/gui/screen/CustomizeFlatLevelScreen
net/minecraft/client/gui/screen/CustomizeFlatLevelScreen$1
net/minecraft/client/gui/screen/CustomizeFlatLevelScreen$SuperflatLayersListWidget
net/minecraft/client/gui/screen/CustomizeFlatLevelScreen$SuperflatLayersListWidget$SuperflatLayerItem
net/minecraft/client/gui/screen/DialogScreen
net/minecraft/client/gui/screen/DialogScreen$ChoiceButton
net/minecraft/client/gui/screen/PresetsScreen
net/minecraft/client/gui/screen/PresetsScreen$SuperflatPreset
net/minecraft/client/gui/screen/PresetsScreen$SuperflatPresetsListWidget
net/minecraft/client/gui/screen/PresetsScreen$SuperflatPresetsListWidget$SuperflatPresetEntry
net/minecraft/client/gui/screen/Screen
net/minecraft/client/gui/screen/option/LanguageOptionsScreen
net/minecraft/client/gui/screen/option/LanguageOptionsScreen$LanguageSelectionListWidget
net/minecraft/client/gui/screen/option/LanguageOptionsScreen$LanguageSelectionListWidget$LanguageEntry
net/minecraft/client/gui/screen/option/VideoOptionsScreen
ERROR: Must be in one package:
net/minecraft/world/gen/feature/DripstoneClusterFeature
net/minecraft/world/gen/feature/LargeDripstoneFeature
net/minecraft/world/gen/feature/LargeDripstoneFeature$1
net/minecraft/world/gen/feature/LargeDripstoneFeature$DripstoneGenerator
net/minecraft/world/gen/feature/LargeDripstoneFeature$WindModifier
net/minecraft/world/gen/feature/SmallDripstoneFeature
net/minecraft/world/gen/feature/util/DripstoneHelper
ERROR: Must be in one package:
net/minecraft/client/util/math/AffineTransformation
net/minecraft/client/util/math/Vector4f
net/minecraft/util/math/DirectionTransformation
net/minecraft/util/math/DirectionTransformation$1
net/minecraft/util/math/Matrix3f
net/minecraft/util/math/Matrix4f
net/minecraft/util/math/Vec3f
ERROR: Must be in one package:
net/minecraft/util/dynamic/RegistryElementCodec
net/minecraft/util/dynamic/RegistryOps
net/minecraft/util/dynamic/RegistryOps$1
net/minecraft/util/dynamic/RegistryOps$EntryLoader
net/minecraft/util/dynamic/RegistryOps$EntryLoader$1
net/minecraft/util/dynamic/RegistryOps$EntryLoader$Impl
net/minecraft/util/dynamic/RegistryOps$ValueHolder
net/minecraft/util/dynamic/RegistryReadingOps
net/minecraft/util/registry/RegistryLookupCodec
ERROR: Must be in one package:
net/minecraft/world/gen/AquiferSampler
net/minecraft/world/gen/StructureWeightSampler
net/minecraft/world/gen/chunk/ChunkGeneratorSettings
net/minecraft/world/gen/chunk/NoiseChunkGenerator
ERROR: Must be in one package:
net/minecraft/world/chunk/EntityChunkDataAccess
net/minecraft/world/storage/RegionBasedStorage
net/minecraft/world/storage/SerializingRegionBasedStorage
net/minecraft/world/storage/StorageIoWorker
net/minecraft/world/storage/StorageIoWorker$Priority
net/minecraft/world/storage/StorageIoWorker$Result
net/minecraft/world/storage/VersionedChunkStorage
ERROR: Must be in one package:
net/minecraft/entity/EyeOfEnderEntity
net/minecraft/entity/projectile/ExplosiveProjectileEntity
net/minecraft/entity/projectile/FireworkRocketEntity
net/minecraft/entity/projectile/FishingBobberEntity
net/minecraft/entity/projectile/FishingBobberEntity$1
net/minecraft/entity/projectile/FishingBobberEntity$PositionType
net/minecraft/entity/projectile/FishingBobberEntity$State
net/minecraft/entity/projectile/LlamaSpitEntity
net/minecraft/entity/projectile/PersistentProjectileEntity
net/minecraft/entity/projectile/PersistentProjectileEntity$PickupPermission
net/minecraft/entity/projectile/ProjectileEntity
net/minecraft/entity/projectile/ShulkerBulletEntity
net/minecraft/entity/projectile/thrown/ThrownEntity
ERROR: Must be in one package:
net/minecraft/client/Keyboard
net/minecraft/client/Keyboard$1
net/minecraft/client/MinecraftClient
net/minecraft/client/MinecraftClient$1
net/minecraft/client/MinecraftClient$IntegratedResourceManager
net/minecraft/client/MinecraftClient$WorldLoadAction
net/minecraft/client/Mouse
net/minecraft/client/option/FullscreenOption
net/minecraft/client/option/Option
net/minecraft/client/option/Option$1
ERROR: Must be in one package:
net/minecraft/entity/ai/brain/task/AdmireItemTask
net/minecraft/entity/ai/brain/task/HuntFinishTask
net/minecraft/entity/ai/brain/task/HuntHoglinTask
net/minecraft/entity/ai/brain/task/RemoveOffHandItemTask
net/minecraft/entity/mob/AbstractPiglinEntity
net/minecraft/entity/mob/PiglinBrain
net/minecraft/entity/mob/PiglinBruteBrain
net/minecraft/entity/mob/PiglinBruteEntity
net/minecraft/entity/mob/PiglinEntity
ERROR: Must be in one package:
net/minecraft/client/gui/screen/world/CreateWorldScreen
net/minecraft/client/gui/screen/world/CreateWorldScreen$1
net/minecraft/client/gui/screen/world/CreateWorldScreen$Mode
net/minecraft/client/gui/screen/world/CreateWorldScreen$WorldCreationException
net/minecraft/client/gui/screen/world/MoreOptionsDialog
net/minecraft/client/world/GeneratorType
net/minecraft/client/world/GeneratorType$1
net/minecraft/client/world/GeneratorType$2
net/minecraft/client/world/GeneratorType$3
net/minecraft/client/world/GeneratorType$4
net/minecraft/client/world/GeneratorType$5
net/minecraft/client/world/GeneratorType$6
net/minecraft/client/world/GeneratorType$7
net/minecraft/client/world/GeneratorType$8
net/minecraft/client/world/GeneratorType$ScreenProvider
ERROR: Must be in one package:
net/minecraft/client/model/ModelCuboidData
net/minecraft/client/model/ModelPartBuilder
net/minecraft/client/util/math/Dilation
ERROR: Must be in one package:
net/minecraft/screen/ScreenHandler
net/minecraft/screen/slot/Slot
ERROR: Must be in one package:
net/minecraft/screen/AbstractFurnaceScreenHandler
net/minecraft/screen/slot/FurnaceFuelSlot

์•„, ๊ฝค ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋” ๋‚˜์€ ๋งคํ•‘์„ ์œ„ํ•ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ์ž…์žฅ์„ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋…ผ์˜ ํ•  ๊ฐ€์น˜๊ฐ€์žˆ๋Š”

์ด๋ชจ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์•„๋งˆ๋„์ด ์ž‘์—…์„ javadoc์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋„๋ก ํŒจ์น˜ ํ•  ๊ฒƒ์ด๋‹ค. (์šฐ๋ฆฌ์˜ javadoc์€ doclint ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด๋„ ์‹คํŒจํ•˜์ง€ ์•Š๋Š”๋‹ค). ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ์ž˜๋ชป๋œ ์ƒํƒœ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง„ ๊ฒƒ์„ ์žก์•„์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•˜๊ฑฐ๋‚˜, ci์— ์žˆ์ง€ ์•Š์„ ๋•Œ๋งŒ ์‹คํŒจ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ์Šค ๋‹ˆํŽซ :

ERROR: Must be in one package:
net/minecraft/world/gen/AquiferSampler
net/minecraft/world/gen/StructureWeightSampler
net/minecraft/world/gen/chunk/ChunkGeneratorSettings
net/minecraft/world/gen/chunk/NoiseChunkGenerator

๋Œ์ด์ผœ ๋ณด๋ฉด, ์ผ๋ถ€๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋น„๊ณต๊ฐœ๋กœ ๋‘๊ฑฐ๋‚˜ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

https://github.com/FabricMC/yarn/issues/128#issuecomment -254043872์—์„œ :

ํžŒํŠธ์ด์ง€๋งŒ Mojang์˜ ๋‚ด๋ถ€ ๋งคํ•‘๊ณผ์˜ ํ˜ธํ™˜์„ฑ์€ ๊ฒฐ์ฝ” ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

Screen , ProjectileEntity ๋“ฑ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค (๋†’์€ ํŠธ๋ž˜ํ”ฝ์˜ ๊ณต์šฉ API ์œ ์‚ฌ ํด๋ž˜์Šค)์— ๋™๋ฃŒ๋ฅผ ์œ„ํ•ด ์˜ˆ์•ฝ ๋œ ํŒจํ‚ค์ง€ ๋น„๊ณต๊ฐœ ํ•ญ๋ชฉ์ด์žˆ๋Š” ๊ฒฝ์šฐ, ์–ด๋Š ์ชฝ์ด๋“  ๋ชจ๋“œ๊ฐ€ ์•ก์„ธ์Šค๋ฅผ ์—ด๋ ค๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. -์ž์—ฐ์ฒ˜๋Ÿผ. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ๋ณผ ์ˆ˜์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋™์ผํ•œ ํŒจํ‚ค์ง€์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ ์ตํ•˜๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

IMO ์šฐ๋ฆฌ๋Š” ํŒจํ‚ค์ง€-๋น„๊ณต๊ฐœ ์นœ๊ตฌ๋ฅผ ๊ฐ™์€ ํŒจํ‚ค์ง€์— ํ•จ๊ป˜ ๋ณด๊ด€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ง€์—ญ์—์„œ๋Š” ๋งคํ•‘์ด ๋” ๋‚˜๋น ์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ํ–‰๋™ ์ธก๋ฉด์—์„œ๋„ ๋” ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ ์ด ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ ๋ฉ”์‹œ์ง€์—์„œ ThrownEntity๋Š” ProjectileEntity์™€ ๋™์ผํ•œ ํŒจํ‚ค์ง€์— ์žˆ์–ด์•ผํ•˜์ง€๋งŒ ๊ทธ ์ด์œ ๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ThrownEntity๋Š” jdk์˜ ๋žŒ๋‹ค ๋ฉ”ํƒ€ ํŒฉํ† ๋ฆฌ๊ฐ€ ์™„์ „ํžˆ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋”๋ผ๋„ ๋žŒ๋‹ค ๊ตฌ์„ฑ (์ผ๋ฐ˜์ ์œผ๋กœ javac afaik์ด ๋ธŒ๋ฆฌ์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑ ํ•จ)์—์„œ ProjectileEntity์˜ ๋ณดํ˜ธ ๋œ ๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ˆ˜๊ป˜๋ผ์˜ ํŒจํ‚ค์ง€ ๊ฐ€์‹œ์„ฑ ์ƒ‰์ธ์— ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜๋„๋ก ๋ฏธ๋ฆฌ ์•Œ๋ฆผ์„ ๋‘์‹ญ์‹œ์˜ค.

์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•˜๋ฉด ProjectileEntity์˜ ์ƒ์„ฑ์ž๋Š” ํŒจํ‚ค์ง€ ๋น„๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ...
๋”ฐ๋ผ์„œ ๊ฐ€์‹œ์„ฑ ์ธ๋ฑ์Šค์˜ ๊ฒฝ๊ณ ๋Š” javac๊ฐ€ ๋ธŒ๋ฆฌ์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ชจ๋‘ ์œ ํšจํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ...

Mojang์ด ํŠน์ • ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์œ ๋งคํ•‘์— ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ Loader๊ฐ€ ๋” ์ด์ƒ ๊ฐœ๋ฐœ ๋Ÿฐํƒ€์ž„ ํ•ดํ‚น์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๊ณต๊ฐœ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์€ Tiny Remapper๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” Chocohead์— ๋™์˜ํ•˜๋ฉฐ Mojang์˜ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ์กด์ค‘ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์—…์„ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํˆด์ฒด์ธ์˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Mojang์ด ํŠน์ • ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์œ ๋งคํ•‘์— ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ Loader๊ฐ€ ๋” ์ด์ƒ ๊ฐœ๋ฐœ ๋Ÿฐํƒ€์ž„ ํ•ดํ‚น์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๊ณต๊ฐœ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์€ Tiny Remapper๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ , ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” https://github.com/FabricMC/fabric-loom/blob/57c9a8f3209121f22e84b8b01b64f1093256f1d3/src/main/java/net/fabricmc/loom/configuration/providers/minecraft ์—์„œ ๋Œ€์‹  ์•ก์„ธ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์„ ์–ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. https://github.com/FabricMC/yarn/blob/629b96e84a8c7fcd44f87c63cbcf923000bfdf38/build.gradle#L826 -L830

์ง๊ธฐ ๋ฆฌ ํŒฉํ„ฐ ์ œ์•ˆ์€ ์‹ค๊ณผ ์ง๊ธฐ ์‚ฌ์ด์˜ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ถ„ํ•  ์ง๊ธฐ๋ฅผ ์‹ค์ œ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ข‹์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ํ•ด๊ฒฐ์ฑ…์€ ํ•ญ์ƒ ํŒจ๋ธŒ๋ฆญ ๋กœ๋”๋ฅผ ํ†ตํ•ด ๋ช…๋ช… ๋œ (yarn) ๋งคํ•‘ ๋œ jar / ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ชจ๋“œ์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ธฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰