Move capability deduplication hook to a later injection point
This commit is contained in:
parent
4fe04025ef
commit
5933886e0a
|
|
@ -1,20 +1,22 @@
|
|||
package org.embeddedt.modernfix.neoforge.mixin.perf.capability_list_compaction;
|
||||
|
||||
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||
import net.neoforged.bus.api.Event;
|
||||
import com.llamalad7.mixinextras.sugar.Local;
|
||||
import net.neoforged.neoforge.capabilities.BaseCapability;
|
||||
import net.neoforged.neoforge.capabilities.CapabilityHooks;
|
||||
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
|
||||
import org.embeddedt.modernfix.neoforge.caps.CapProviderGetter;
|
||||
import org.embeddedt.modernfix.neoforge.caps.ITrackingCapEvent;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(value = CapabilityHooks.class, remap = false)
|
||||
public class CapabilityHooksMixin {
|
||||
@WrapOperation(method = "init", at = @At(value = "INVOKE", target = "Lnet/neoforged/fml/ModLoader;postEventWrapContainerInModOrder(Lnet/neoforged/bus/api/Event;)V"))
|
||||
private static void deduplicateCaps(Event event, Operation<Void> original) {
|
||||
original.call(event);
|
||||
// Must inject as late as possible to run after mixins that add their own capabilities
|
||||
// (e.g. https://github.com/SuperMartijn642/Entangled/blob/37f2489d8badc3f52401088d8a6e25d2a63a045c/src/main/java/com/supermartijn642/entangled/mixin/neoforge/CapabilityHooksMixin.java)
|
||||
@Inject(method = "init", at = @At(value = "RETURN"))
|
||||
private static void deduplicateCaps(CallbackInfo ci, @Local(ordinal = 0) RegisterCapabilitiesEvent event) {
|
||||
if(event instanceof ITrackingCapEvent) {
|
||||
//var stopwatch = Stopwatch.createStarted();
|
||||
for(BaseCapability<?, ?> cap : ((ITrackingCapEvent)event).mfix$getTrackedCaps()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user