Skip to content

Attempt Alternate NMS Teleport Strategy #244

@Jake-Moore

Description

@Jake-Moore
package com.golfing8.nms.event;

import com.golfing8.nms.reflection.FieldHandle;
import com.golfing8.nms.reflection.FieldHandles;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.RegisteredListener;

public class HandlerListAccessor {
    private static FieldHandle<RegisteredListener[]> registeredListenersFieldHandle;
    private static boolean setup;

    public static RegisteredListener[] getRegisteredListeners(HandlerList handlerList) {
        if (!setup)
            return null;

        return registeredListenersFieldHandle.get(handlerList);
    }

    public static void setRegisteredListeners(HandlerList handlerList, RegisteredListener[] listeners) {
        if (!setup)
            return;

        registeredListenersFieldHandle.set(handlerList, listeners);
    }

    static {
        try {
            registeredListenersFieldHandle = (FieldHandle<RegisteredListener[]>) FieldHandles.getHandle("handlers", HandlerList.class);
            setup = true;
        } catch (Throwable thr) {
            registeredListenersFieldHandle = null;
            setup = false;
        }
    }
}
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    🏗 In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions