Incompatibility between Connector and SpongeNeo due to RecipeManager missing in ResourceManagerHelperImpl#sort listeners
Ninguém assumiu esta issue ainda.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Minecraft version
1.21.1
Describe the bug
When running Connector (2.0.0-beta.8) together with SpongeNeo on Forge 1.21.1 using Forgified Fabric API, the server fails resource reloads because ResourceManagerHelperImpl#getWrapperLookup cannot find a RecipeManager in the reload listeners list. This happens because SpongeNeo’s reload listener handling changes the order and contents of the listener list before Connector/FAPI processing, so the vanilla RecipeManager is no longer present when FAPI sorts listeners.
Steps to reproduce
- Install connector on a SpongeNeo server
- Add some fabric mod such as betterend
- Then crashed cause the No RecipeManager found in listeners!
...
Logs
https://gist.github.com/Sam-Chai/308356f2317c3ff77194950dd3956b4f
Additional context
From the begining I found that it seems like connector caused this problem. But when I check the crash-report, I notice that this crash from the FFAPI.
The issue from connector: https://github.com/Sinytra/Connector/issues/1911
Cause
ResourceManagerHelperImpl#sort(List) assumes the provided list always contains a RecipeManager instance (vanilla behavior). SpongeNeo modifies the reload process so that the RecipeManager is not in the list when FAPI’s sort runs. This triggers the IllegalStateException.
Proposed Fix
Add a compatibility patch in Connector that, when SpongeNeo is detected, ensures a RecipeManager is present in the listeners list before FAPI attempts to resolve dependencies.
Suggested Implementation
A minimal Mixin to ResourceManagerHelperImpl#sort(List) with remap=false, inserting the vanilla RecipeManager from the running server if missing:
@Inject(method = "sort(Ljava/util/List;)V", at = @At("HEAD"))
private void connector$ensureRecipeManagerPresent(List<PreparableReloadListener> listeners, CallbackInfo ci) {
if (!FMLEnvironment.dist.isDedicatedServer() || !ModList.get().isLoaded("spongeneo")) return;
for (PreparableReloadListener l : listeners) if (l instanceof RecipeManager) return;
MinecraftServer server = ServerLifecycleHooks.getCurrentServer();
if (server == null) return;
ReloadableServerResources res = server.getServerResources().managers();
if (res == null) return;
RecipeManager rm = res.getRecipeManager();
if (rm == null) return;
listeners.add(0, rm);
}
This ensures that:
- It only runs on a dedicated server.
- It only triggers when SpongeNeo is loaded.
- It does nothing if a RecipeManager is already in the list.
- It adds the RecipeManager at the start of the list to preserve vanilla/FAPI expectations.
Result:
I fixed that. Connector and FFAPI with betterend running on a SpongeNeo server.
But I havn't test too much, and it semms caused some tag problem and I have to fix it.
- Linguagem predominante
- Java
- Estrelas
- 181
- Forks
- 41
- Merge médio
- 19d 17h
- PRs com merge (30d)
- 1
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Sinytra/ForgifiedFabricAPI
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
Sinytra/ForgifiedFabricAPI#298 ·
-
Missing mixin in fabric-registry-sync-v0 suspected to break modded registry loadingTalvez livre de novo @Su5eD assumiu há 87 dias e não há nenhum pull request aberto. Aberta26.1.x bug
Sinytra/ForgifiedFabricAPI#280 · 6 comentários · 1 responsável ·
-
1.21.x bug
Sinytra/ForgifiedFabricAPI#276 ·
-
1.21.x bug
Sinytra/ForgifiedFabricAPI#269 ·
-
1.21.x bug
Sinytra/ForgifiedFabricAPI#267 ·
Todas as issues de Sinytra/ForgifiedFabricAPI
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Netcracker/qubership-integration-platform#1046 ·
Mantenedores costumam responder em até 2 dias
-
`check_java_version()` fails when Java path contains spaces (Windows / Git Bash, `C:\Program Files`)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Fix Math.ceilDiv wrong result for exact positive divisionsTalvez já em andamento @pamod-madubashana assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
scala-native/scala-native#5094 ·
Mantenedores costumam responder em até 1 dia
-
NullPointerException in blocking command completion callback when the command succeeds (3.52.0)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 2 dias