|
1 | 1 | package org.embeddedt.modernfix.neoforge.mixin.perf.capability_list_compaction; |
2 | 2 |
|
3 | | -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; |
4 | | -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; |
5 | | -import net.neoforged.bus.api.Event; |
| 3 | +import com.llamalad7.mixinextras.sugar.Local; |
6 | 4 | import net.neoforged.neoforge.capabilities.BaseCapability; |
7 | 5 | import net.neoforged.neoforge.capabilities.CapabilityHooks; |
| 6 | +import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; |
8 | 7 | import org.embeddedt.modernfix.neoforge.caps.CapProviderGetter; |
9 | 8 | import org.embeddedt.modernfix.neoforge.caps.ITrackingCapEvent; |
10 | 9 | import org.spongepowered.asm.mixin.Mixin; |
11 | 10 | import org.spongepowered.asm.mixin.injection.At; |
| 11 | +import org.spongepowered.asm.mixin.injection.Inject; |
| 12 | +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
12 | 13 |
|
13 | 14 | @Mixin(value = CapabilityHooks.class, remap = false) |
14 | 15 | public class CapabilityHooksMixin { |
15 | | - @WrapOperation(method = "init", at = @At(value = "INVOKE", target = "Lnet/neoforged/fml/ModLoader;postEventWrapContainerInModOrder(Lnet/neoforged/bus/api/Event;)V")) |
16 | | - private static void deduplicateCaps(Event event, Operation<Void> original) { |
17 | | - original.call(event); |
| 16 | + // Must inject as late as possible to run after mixins that add their own capabilities |
| 17 | + // (e.g. https://github.com/SuperMartijn642/Entangled/blob/37f2489d8badc3f52401088d8a6e25d2a63a045c/src/main/java/com/supermartijn642/entangled/mixin/neoforge/CapabilityHooksMixin.java) |
| 18 | + @Inject(method = "init", at = @At(value = "RETURN")) |
| 19 | + private static void deduplicateCaps(CallbackInfo ci, @Local(ordinal = 0) RegisterCapabilitiesEvent event) { |
18 | 20 | if(event instanceof ITrackingCapEvent) { |
19 | 21 | //var stopwatch = Stopwatch.createStarted(); |
20 | 22 | for(BaseCapability<?, ?> cap : ((ITrackingCapEvent)event).mfix$getTrackedCaps()) { |
|
0 commit comments