Skip to content

Commit aaaa8ad

Browse files
committed
Move capability deduplication hook to a later injection point
1 parent e2ac3bb commit aaaa8ad

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/capability_list_compaction/CapabilityHooksMixin.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package org.embeddedt.modernfix.neoforge.mixin.perf.capability_list_compaction;
22

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;
64
import net.neoforged.neoforge.capabilities.BaseCapability;
75
import net.neoforged.neoforge.capabilities.CapabilityHooks;
6+
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
87
import org.embeddedt.modernfix.neoforge.caps.CapProviderGetter;
98
import org.embeddedt.modernfix.neoforge.caps.ITrackingCapEvent;
109
import org.spongepowered.asm.mixin.Mixin;
1110
import org.spongepowered.asm.mixin.injection.At;
11+
import org.spongepowered.asm.mixin.injection.Inject;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1213

1314
@Mixin(value = CapabilityHooks.class, remap = false)
1415
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) {
1820
if(event instanceof ITrackingCapEvent) {
1921
//var stopwatch = Stopwatch.createStarted();
2022
for(BaseCapability<?, ?> cap : ((ITrackingCapEvent)event).mfix$getTrackedCaps()) {

0 commit comments

Comments
 (0)