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