Yarn: NoiseChunkGenerator doit être dans net.minecraft.world.gen

Créé le 13 févr. 2021  ·  16Commentaires  ·  Source: 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')

Bien que je pense que le package pour NoiseChunkGenerator est actuellement meilleur, exécuter Minecraft dans un environnement de développement provoque ce crash.

bug discussion refactor toolchain

Commentaire le plus utile

Je dirais le contraire, étant donné que nous corrigeons le comportement de toute façon, il n'y a aucun avantage à des mappages pires simplement parce que Mojang utilise une structure de package particulière. Non moins que vous n'ayez même plus besoin de rendre tout public de Loader lors du hack d'exécution de développement, Tiny Remapper peut le faire directement aux endroits où cela est nécessaire.

Tous les 16 commentaires

Hmm, il semble que l'indice de visibilité des paquets d'énigme a cessé de fonctionner depuis longtemps

Je doute que l'index fonctionne mais l'interface de ligne de commande est tombée en panne. Besoin de vérifier.

J'ai commencé à chercher à améliorer et à corriger le validateur de mappages. Ce serait bien d'essayer de se débarrasser de ces problèmes. Mais nous ne pouvons pas le garantir

Il s'avère que les mappages de chèques n'ont jamais été rompus. C'est ce qui a éclaté:
https://github.com/FabricMC/yarn/blame/21w06a/build.gradle#L396
Devrait utiliser un pot intermédiaire

Et ces mappages de vérification n'ont jamais fonctionné depuis la mise à jour intermédiaire il y a 2 ans!



Regardez les résultats actuels:

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

Aïe, c'est pas mal là-bas. Nous pourrions simplement prendre la position de ne pas se soucier en faveur de meilleures cartographies? Cela vaut la peine de discuter

Imo, nous allons simplement le réparer. Mais je vais probablement patcher cette tâche pour qu'elle fonctionne comme javadoc (notre javadoc n'échoue pas si les erreurs doclint). Nous pouvons donc probablement attraper cette exception d'état illégale lancée et simplement afficher le message d'erreur, ou échouer uniquement lorsque nous ne sommes pas sur ci

Extrait associé:

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

Avec le recul, certaines choses feraient probablement mieux d'être exposées que de laisser le paquet privé ou protégé.

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

C'est un indice, bien sûr, mais la compatibilité avec les mappages internes de Mojang n'a jamais été un objectif.

Si des classes comme Screen , ProjectileEntity etc (classes de type API publiques à fort trafic) ont des packages privés réservés à leurs pairs, je suppose que dans les deux cas, les mods chercheront à ouvrir l'accès parce que leur API -comme la nature. Mais dans la plupart des autres cas que nous voyons ici, je dirais que les garder dans le même paquet est en quelque sorte plus avantageux.

OMI, nous devrions garder les amis privés du paquet ensemble dans les mêmes paquets. Cela peut entraîner de pires mappages à certains endroits, mais ils sont également plus corrects en termes de comportement.

Quelques choses intéressantes ressortent. Par exemple, dans ce message ci-dessus, il est dit que ThrownEntity doit être dans le même package que ProjectileEntity, mais je ne vois pas pourquoi; ThrownEntity utilise cependant une méthode protégée de ProjectileEntity dans sa construction lambda (pour laquelle javac afaik génère généralement une méthode de pont) même si la méta-fabrique lambda de jdk peut totalement gérer cela. Je me rappelle simplement de vérifier si l'index de visibilité des paquets d'énigme a besoin d'une mise à jour.

Il s'avère que suffisamment de brainfart, le constructeur de ProjectileEntity est package private. Voilà pourquoi...
Ainsi, les avertissements de l'index de visibilité semblent tous valides, par exemple lorsque javac ne génère pas de méthodes de pont. Nous devons maintenant passer à la résolution de ces problèmes ...

Je dirais le contraire, étant donné que nous corrigeons le comportement de toute façon, il n'y a aucun avantage à des mappages pires simplement parce que Mojang utilise une structure de package particulière. Non moins que vous n'ayez même plus besoin de rendre tout public de Loader lors du hack d'exécution de développement, Tiny Remapper peut le faire directement aux endroits où cela est nécessaire.

Je suis d'accord avec Chocohead, je ne suis pas en faveur du déplacement des classes juste pour respecter la structure des packages de Mojang. Nous devons résoudre les problèmes ailleurs dans la chaîne d'outils

Je dirais le contraire, étant donné que nous corrigeons le comportement de toute façon, il n'y a aucun avantage à des mappages pires simplement parce que Mojang utilise une structure de package particulière. Non moins que vous n'ayez même plus besoin de rendre tout public de Loader lors du hack d'exécution de développement, Tiny Remapper peut le faire directement aux endroits où cela est nécessaire.

Hmm, nous devons donc déclarer que nous voulons plutôt corriger l'accès à https://github.com/FabricMC/fabric-loom/blob/57c9a8f3209121f22e84b8b01b64f1093256f1d3/src/main/java/ecraft/fabricmc/loom/configuration/providers/ /MinecraftMappedProvider.java#L129 -L136 et https://github.com/FabricMC/yarn/blob/629b96e84a8c7fcd44f87c63cbcf923000bfdf38/build.gradle#L826 -L830

La proposition de refactor du métier à tisser est bonne, car nous pouvons réellement utiliser un métier à tisser divisé pour réduire le code en double entre le fil et le métier à tisser.

Clôture maintenant.

Pour les gens qui se demandent, la solution est toujours d'exécuter le jar / bytecode mappé (yarn) via le chargeur de structure. Cela inclut l'appel des générateurs de données depuis l'environnement de développement de vos mods!

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Runemoro picture Runemoro  ·  4Commentaires

asiekierka picture asiekierka  ·  3Commentaires

Boundarybreaker picture Boundarybreaker  ·  3Commentaires

quat1024 picture quat1024  ·  6Commentaires

Runemoro picture Runemoro  ·  3Commentaires