// Path: src/main/java/com/latenighters/runicarcana/common/arcana/ArcanaType.java
// public class ArcanaType {
// 
//     public static ArcanaType AIR   = new ArcanaType("air");
//     public static ArcanaType EARTH = new ArcanaType("earth");
//     public static ArcanaType WATER = new ArcanaType("water");
//     public static ArcanaType FIRE  = new ArcanaType("fire");
// 
//     private static HashMap<String, ArcanaType> arcanaTypes = new HashMap<>();
// 
//     public final String name;
// 
//     public ArcanaType(String name) {
//         this.name = name;
//     }
// 
//     public static void registerType(ArcanaType arcanaType)
//     {
//         arcanaTypes.put(arcanaType.name, arcanaType);
//     }
// 
//     public static void registerArcanaTypes()
//     {
//         registerType(AIR);
//         registerType(EARTH);
//         registerType(WATER);
//         registerType(FIRE);
//     }
// 
//     public static ArcanaType getArcanaType(String name)
//     {
//         AtomicReference<ArcanaType> retval = new AtomicReference<>();
//         retval.set(AIR);
//         arcanaTypes.forEach((tname,type)->{
//             if(tname.equals(name))
//                 retval.set(arcanaTypes.get(tname));
//         });
// 
//         return retval.get();
//     }
// }
// 
// Path: src/main/java/com/latenighters/runicarcana/common/symbols/backend/DataType.java
// public static void registerDataTypes()
// {
//     registerDataType(ENTITY);
//     registerDataType(BOOLEAN);
//     registerDataType(BLOCK_FACE);
// }
// 
// Path: src/main/java/com/latenighters/runicarcana/common/symbols/backend/FunctionalTypeRegister.java
// public static void registerBaseProviders()
// {
//     registerFunctionalObjectProvider("DrawnSymbol",DrawnSymbol::new);
// }


import com.latenighters.runicarcana.common.arcana.ArcanaType;
import com.latenighters.runicarcana.common.symbols.*;
import net.minecraftforge.event.RegistryEvent;
import static com.latenighters.runicarcana.common.symbols.backend.DataType.registerDataTypes;
import static com.latenighters.runicarcana.common.symbols.backend.FunctionalTypeRegister.registerBaseProviders;
package com.latenighters.runicarcana.common.symbols.backend;




public class SymbolRegistration {

//    private static final DeferredRegister<Symbol> SYMBOLS = new DeferredRegister<>(SymbolRegistryHandler.SYMBOLS, MODID);

    public static void registerSymbols(final RegistryEvent.Register<Symbol> evt)
    {
        if(!evt.getRegistry().getRegistrySuperType().equals(Symbol.class))
            return;

        evt.getRegistry().register(new DebugSymbol());
        evt.getRegistry().register(new ExpulsionSymbol());
        evt.getRegistry().register(new InsertionSymbol());
        evt.getRegistry().register(new RedstoneSymbol());
        evt.getRegistry().register(new BooleanLogicSymbol());
        evt.getRegistry().register(new DetectSymbol());

        //TODO move this out of here...
        FunctionalObjects.putObject("DrawnSymbol",DrawnSymbol.class);
        registerDataTypes();
        registerBaseProviders();
// Path: src/main/java/com/latenighters/runicarcana/common/arcana/ArcanaType.java
// public class ArcanaType {
// 
//     public static ArcanaType AIR   = new ArcanaType("air");
//     public static ArcanaType EARTH = new ArcanaType("earth");
//     public static ArcanaType WATER = new ArcanaType("water");
//     public static ArcanaType FIRE  = new ArcanaType("fire");
// 
//     private static HashMap<String, ArcanaType> arcanaTypes = new HashMap<>();
// 
//     public final String name;
// 
//     public ArcanaType(String name) {
//         this.name = name;
//     }
// 
//     public static void registerType(ArcanaType arcanaType)
//     {
//         arcanaTypes.put(arcanaType.name, arcanaType);
//     }
// 
//     public static void registerArcanaTypes()
//     {
//         registerType(AIR);
//         registerType(EARTH);
//         registerType(WATER);
//         registerType(FIRE);
//     }
// 
//     public static ArcanaType getArcanaType(String name)
//     {
//         AtomicReference<ArcanaType> retval = new AtomicReference<>();
//         retval.set(AIR);
//         arcanaTypes.forEach((tname,type)->{
//             if(tname.equals(name))
//                 retval.set(arcanaTypes.get(tname));
//         });
// 
//         return retval.get();
//     }
// }
// 
// Path: src/main/java/com/latenighters/runicarcana/common/symbols/backend/DataType.java
// public static void registerDataTypes()
// {
//     registerDataType(ENTITY);
//     registerDataType(BOOLEAN);
//     registerDataType(BLOCK_FACE);
// }
// 
// Path: src/main/java/com/latenighters/runicarcana/common/symbols/backend/FunctionalTypeRegister.java
// public static void registerBaseProviders()
// {
//     registerFunctionalObjectProvider("DrawnSymbol",DrawnSymbol::new);
// }


// Path: src/main/java/com/latenighters/runicarcana/common/symbols/backend/SymbolRegistration.java
import com.latenighters.runicarcana.common.arcana.ArcanaType;
import com.latenighters.runicarcana.common.symbols.*;
import net.minecraftforge.event.RegistryEvent;
import static com.latenighters.runicarcana.common.symbols.backend.DataType.registerDataTypes;
import static com.latenighters.runicarcana.common.symbols.backend.FunctionalTypeRegister.registerBaseProviders;

package com.latenighters.runicarcana.common.symbols.backend;




public class SymbolRegistration {

//    private static final DeferredRegister<Symbol> SYMBOLS = new DeferredRegister<>(SymbolRegistryHandler.SYMBOLS, MODID);

    public static void registerSymbols(final RegistryEvent.Register<Symbol> evt)
    {
        if(!evt.getRegistry().getRegistrySuperType().equals(Symbol.class))
            return;

        evt.getRegistry().register(new DebugSymbol());
        evt.getRegistry().register(new ExpulsionSymbol());
        evt.getRegistry().register(new InsertionSymbol());
        evt.getRegistry().register(new RedstoneSymbol());
        evt.getRegistry().register(new BooleanLogicSymbol());
        evt.getRegistry().register(new DetectSymbol());

        //TODO move this out of here...
        FunctionalObjects.putObject("DrawnSymbol",DrawnSymbol.class);
        registerDataTypes();
        registerBaseProviders();
        ArcanaType.registerArcanaTypes();