package net.fabricmc.base.util;

import net.fabricmc.base.util.hookchain.HookchainUtils;
import net.fabricmc.base.util.hookchain.IFlexibleHookchain;
import net.fabricmc.base.util.hookchain.TreeHookchain;

import java.lang.invoke.MethodType;

/**
 * Created by asie on 8/19/16.
 */
public class LoadingBus {
    private final IFlexibleHookchain hookchain;

    public LoadingBus() {
        hookchain = new TreeHookchain(MethodType.methodType(void.class));
    }

    public void register(Object o) {
        HookchainUtils.addAnnotatedHooks(hookchain, o);
    }

    public void registerHookName(String mark) {
        hookchain.add(mark);
    }

    public void start() {
        hookchain.call();
    }

    public void call(String mark) {
        hookchain.call(mark);
    }
}

@@ -1,8 +1,601 @@
+/*%0A * Copyright 2016 FabricMC%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *     http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A%0A
 package 

Add license header to LoadingBus