Yarn: NoiseChunkGenerator harus ada di net.minecraft.world.gen

Dibuat pada 13 Feb 2021  ·  16Komentar  ·  Sumber: 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')

Meskipun menurut saya paket untuk NoiseChunkGenerator saat ini lebih baik, menjalankan Minecraft di lingkungan pengembangan menyebabkan crash ini.

bug discussion refactor toolchain

Komentar yang paling membantu

Saya berpendapat sebaliknya, mengingat kami memperbaiki perilaku dengan cara apa pun, tidak ada keuntungan untuk pemetaan yang lebih buruk hanya karena Mojang kebetulan menggunakan struktur paket tertentu. Paling tidak Anda bahkan tidak membutuhkan Loader untuk membuat semuanya menjadi publik di dev runtime hack lagi, Tiny Remapper dapat melakukannya langsung di tempat-tempat yang membutuhkannya.

Semua 16 komentar

Hmm, sepertinya indeks visibilitas paket dari enigma sudah lama berhenti berfungsi

Saya ragu indeks berfungsi tetapi antarmuka baris perintah rusak. Perlu diperiksa.

Saya mulai melihat untuk meningkatkan dan memperbaiki validator pemetaan. Akan menyenangkan untuk mencoba dan menyingkirkan masalah ini. Tapi kami tidak bisa menjaminnya

Ternyata pemetaan cek tidak pernah rusak. Inilah yang rusak:
https://github.com/FabricMC/yarn/blame/21w06a/build.gradle#L396
Harus menggunakan toples perantara

Dan pemetaan cek ini tidak pernah berfungsi sejak pembaruan perantara 2 tahun yang lalu!



Lihat hasil saat ini:

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

Aduh, cukup banyak disana. Kami hanya bisa mengambil sikap tidak peduli demi pemetaan yang lebih baik? Layak untuk didiskusikan

Imo kami hanya akan memperbaikinya. Tapi saya mungkin akan menambal tugas ini agar berfungsi seperti javadoc (javadoc kami tidak gagal jika doclint error). Jadi kita mungkin bisa menangkap bahwa pengecualian negara ilegal dilempar dan hanya mencetak pesan kesalahan, atau hanya gagal ketika kita tidak berada di ci

Cuplikan terkait:

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

Melihat ke belakang, beberapa barang mungkin lebih baik diekspos daripada paket kiri pribadi atau dilindungi.

Dari https://github.com/FabricMC/yarn/issues/128#issuecomment -254043872:

Itu memang petunjuk, tapi kompatibilitas dengan pemetaan internal Mojang tidak pernah menjadi tujuan.

Jika kelas seperti Screen , ProjectileEntity dll (kelas seperti api publik dengan lalu lintas tinggi) memang memiliki paket barang pribadi yang disediakan untuk rekan-rekan mereka, saya kira cara mana pun mods akan berusaha membuka akses karena api mereka -seperti alam. Tetapi dalam kebanyakan kasus lain yang kita lihat di sini, menurut saya menyimpannya dalam paket yang sama entah bagaimana lebih bermanfaat.

IMO kita harus menyimpan paket-private friends bersama dalam satu paket. Ini mungkin menghasilkan pemetaan yang lebih buruk di beberapa tempat, tetapi mereka juga lebih tepat dari segi perilaku.

Beberapa hal menarik menonjol. Misalnya, dalam pesan di atas dikatakan ThrownEntity harus berada dalam paket yang sama dengan ProjectileEntity, namun saya tidak mengerti mengapa; Meskipun demikian, ThrownEntity menggunakan satu metode terlindungi dari ProjectileEntity dalam konstruksi lambda-nya (yang biasanya dihasilkan oleh javac afaik sebagai metode penghubung) meskipun pabrik meta lambda jdk dapat sepenuhnya mengatasinya. Hanya memasang pengingat untuk diri saya sendiri untuk memeriksa apakah indeks visibilitas paket dari enigma perlu diperbarui.

Ternyata cukup brainfart, konstruktor ProjectileEntity adalah paket pribadi. Karena itulah ...
Jadi peringatan dari indeks visibilitas terlihat valid, seperti saat javac tidak membuat metode penghubung. Sekarang kita perlu melanjutkan untuk memperbaiki masalah itu ...

Saya berpendapat sebaliknya, mengingat kami memperbaiki perilaku dengan cara apa pun, tidak ada keuntungan untuk pemetaan yang lebih buruk hanya karena Mojang kebetulan menggunakan struktur paket tertentu. Paling tidak Anda bahkan tidak membutuhkan Loader untuk membuat semuanya menjadi publik di dev runtime hack lagi, Tiny Remapper dapat melakukannya langsung di tempat-tempat yang membutuhkannya.

Saya setuju dengan Chocohead, saya tidak ingin berpindah kelas hanya untuk menghormati struktur paket Mojang. Kami perlu memperbaiki masalah di tempat lain di toolchain

Saya berpendapat sebaliknya, mengingat kami memperbaiki perilaku dengan cara apa pun, tidak ada keuntungan untuk pemetaan yang lebih buruk hanya karena Mojang kebetulan menggunakan struktur paket tertentu. Paling tidak Anda bahkan tidak membutuhkan Loader untuk membuat semuanya menjadi publik di dev runtime hack lagi, Tiny Remapper dapat melakukannya langsung di tempat-tempat yang membutuhkannya.

Hmm, jadi kami perlu menyatakan bahwa kami ingin memperbaiki akses di https://github.com/FabricMC/fabric-loom/blob/57c9a8f3209121f22e84b8b01b64f1093256f1d3/src/main/java/net/fabricmc/loom/configuration/providers/minecraft /MinecraftMappedProvider.java#L129 -L136 dan https://github.com/FabricMC/yarn/blob/629b96e84a8c7fcd44f87c63cbcf923000bfdf38/build.gradle#L826 -L830

Proposal alat tenun refactor bagus sehingga kita benar-benar dapat menggunakan alat tenun terpisah untuk mengurangi kode duplikat antara benang dan alat tenun

Menutup ini sekarang.

Bagi orang-orang yang bertanya-tanya, solusinya adalah selalu menjalankan jar / bytecode yang dipetakan (benang) melalui pemuat kain. Ini termasuk memanggil generator data dari env dev mods Anda!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ChloeDawn picture ChloeDawn  ·  6Komentar

Awakened-Redstone picture Awakened-Redstone  ·  4Komentar

altrisi picture altrisi  ·  4Komentar

quat1024 picture quat1024  ·  3Komentar

quat1024 picture quat1024  ·  6Komentar