Yarn: Maneira automatizada de gerar jars nomeados

Criado em 2 abr. 2021  ·  5Comentários  ·  Fonte: FabricMC/yarn

Olá,
Eu escrevi uma ferramenta chamada PixLyzer . Ele usa os mapeamentos de fios para < 1.14.4 e os mapeamentos de mojang para 1.14.4 +. Eu gosto de mapeamentos de fios muito mais do que os originais.

Meu problema é que preciso integrar a integração jar nomeada no meu script. Não tenho tempo para gerar manualmente os yarn jars para as versões mais recentes e para todas as versões entre 21w13a e 1.14.4 . Minha última tentativa de gerar os mapeamentos mais antigos foi fazer o checkout de 1.14.4? e alterar a versão do minecraft aqui: https://github.com/FabricMC/yarn/blob/21w13a/build.gradle#L29. Versões mais antigas são incompatíveis com gradle e/ou não possuem mapNamedJar

Como gerar automaticamente mapeamentos para versões mais antigas? (Com isso quero dizer algo como gradle mapNamedJar 1.15.2 .

Obrigado

discussion toolchain

Comentários muito úteis

Oi,

Você pode usar o remapeamento minúsculo para remapear jars com mapeamentos fornecidos.

Você pode encontrar um download aqui: https://maven.fabricmc.net/net/fabricmc/tiny-remapper/0.3.2/ (use o fat jar se quiser usá-lo através do cli)
Você pode encontrar fios no formato minúsculo aqui: https://maven.fabricmc.net/net/fabricmc/yarn/ (os arquivos none v2 jar ou gz serão melhores para versões mais antigas do jogo)

O Tiny Reampper também possui uma API se você desejar chamá-lo diretamente em seu código (basta puxá-lo via maven). Você pode usar o mapNamedJar como exemplo disso: https://github.com/FabricMC/yarn/blob/21w13a/build.gradle#L1050

Deve ser apenas uma questão de fazer com que sua ferramenta baixe o minecraft e a versão do fio que você deseja usar e, em seguida, invoque o minúsculo remapper.

Todos 5 comentários

Oi,

Você pode usar o remapeamento minúsculo para remapear jars com mapeamentos fornecidos.

Você pode encontrar um download aqui: https://maven.fabricmc.net/net/fabricmc/tiny-remapper/0.3.2/ (use o fat jar se quiser usá-lo através do cli)
Você pode encontrar fios no formato minúsculo aqui: https://maven.fabricmc.net/net/fabricmc/yarn/ (os arquivos none v2 jar ou gz serão melhores para versões mais antigas do jogo)

O Tiny Reampper também possui uma API se você desejar chamá-lo diretamente em seu código (basta puxá-lo via maven). Você pode usar o mapNamedJar como exemplo disso: https://github.com/FabricMC/yarn/blob/21w13a/build.gradle#L1050

Deve ser apenas uma questão de fazer com que sua ferramenta baixe o minecraft e a versão do fio que você deseja usar e, em seguida, invoque o minúsculo remapper.

@modmuss50 Obrigado pela resposta (super rápida), com certeza vou experimentar. Infelizmente, não tive tempo nos últimos dias para responder.

Olá,
tem outra pergunta.

(Suponha que você use a versão 21w13a e queira mapear de oficial para nomeado):

Eu posso usar o remapeamento minúsculo para mapear de offical para intermediary . Tudo bem com este. Agora eu quero mapear de intermediary para named . Quando faço check-out 21w13a e executo gradle mapNamedJar , vejo na pasta temporária um arquivo chamado merge-v2.tiny . Quando eu uso este arquivo e executo o remapper está tudo bem e recebo o jar que estou acostumado. Quando eu uso os mapeamentos de fios do maven (não importa o quê, os mesclados, os v2, ...) posso mapear a maioria das classes para os nomes nomeados, mas alguns (por exemplo net/minecraft/class_6171 ) não são sendo renomeado. Eu verifiquei os mapeamentos e ao grepping após esta classe recebo a seguinte saída:

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

Portanto, nenhum mapeamento nomeado está disponível. Os mapeamentos no maven são diferentes ou estou fazendo algo errado?

Ty

(Ok, pequena edição: usei pequenos mapeamentos antigos, mas ainda assim: verifique a classe net/minecraft/class_5348$1 )

v2 não contém os nomes intermediários, você precisa baixá-los separadamente do maven e combinar os mapeamentos ou ir de oficial -> intermediário -> nomeado.

Posso mapear de oficial para intermediário sem problemas. Eu uso v2 ou v1 do maven ( https://maven.fabricmc.net/net/fabricmc/yarn/ ), mas em nenhum lugar há um nome nomeado desta classe. Esse é o problema e não que não seja mapeado (quase todos são mapeados)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Juuxel picture Juuxel  ·  6Comentários

Runemoro picture Runemoro  ·  4Comentários

Boundarybreaker picture Boundarybreaker  ·  3Comentários

liach picture liach  ·  4Comentários

asiekierka picture asiekierka  ·  4Comentários