diff options
Diffstat (limited to 'src/main/java/net/corecg/transit')
11 files changed, 224 insertions, 0 deletions
diff --git a/src/main/java/net/corecg/transit/impl/IAcceptor.java b/src/main/java/net/corecg/transit/impl/IAcceptor.java new file mode 100644 index 0000000..2561a04 --- /dev/null +++ b/src/main/java/net/corecg/transit/impl/IAcceptor.java @@ -0,0 +1,13 @@ +package net.corecg.transit.impl; + +import net.corecg.transit.type.IType; +import net.minecraft.util.math.Direction; + +public interface IAcceptor<T extends IType<?, ?>> +{ + // Direction given if acceptor is a block + public boolean canAccept(Direction d); + + // Accept (or not) a provided T (should trigger ITransferEvent) + public boolean accept(T provided); +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/impl/IConsumer.java b/src/main/java/net/corecg/transit/impl/IConsumer.java new file mode 100644 index 0000000..cca2b5c --- /dev/null +++ b/src/main/java/net/corecg/transit/impl/IConsumer.java @@ -0,0 +1,10 @@ +package net.corecg.transit.impl; + +import net.corecg.transit.type.IType; + +public interface IConsumer<T extends IType<?, ?>> extends IAcceptor<T> +{ + public boolean canConsume(); + + +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/impl/IGenerator.java b/src/main/java/net/corecg/transit/impl/IGenerator.java new file mode 100644 index 0000000..e8aa791 --- /dev/null +++ b/src/main/java/net/corecg/transit/impl/IGenerator.java @@ -0,0 +1,10 @@ +package net.corecg.transit.impl; + +import net.corecg.transit.type.IType; + +public interface IGenerator<T extends IType<?, ?>> extends IProvider<T> +{ + public boolean canGenerate(); + + +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/impl/IProvider.java b/src/main/java/net/corecg/transit/impl/IProvider.java new file mode 100644 index 0000000..082ef07 --- /dev/null +++ b/src/main/java/net/corecg/transit/impl/IProvider.java @@ -0,0 +1,17 @@ +package net.corecg.transit.impl; + +import net.corecg.transit.type.IType; +import net.minecraft.util.math.Direction; + +public interface IProvider<T extends IType<?, ?>> +{ + + // Direction given if provider is a block + public boolean canProvide(Direction d); + + // Provide the next T (should trigger ITransferEvent) + public T provide(); + + // Retain the rejected T if the acceptor did not accept it (should trigger ITransferEvent) + public void accept(T rejected); +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/IBaseType.java b/src/main/java/net/corecg/transit/type/IBaseType.java new file mode 100644 index 0000000..4cf5ada --- /dev/null +++ b/src/main/java/net/corecg/transit/type/IBaseType.java @@ -0,0 +1,7 @@ +package net.corecg.transit.type; + +public interface IBaseType<T> +{ + + public T getData(); +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/IType.java b/src/main/java/net/corecg/transit/type/IType.java new file mode 100644 index 0000000..c7b1854 --- /dev/null +++ b/src/main/java/net/corecg/transit/type/IType.java @@ -0,0 +1,10 @@ +package net.corecg.transit.type; + +public interface IType<T, B> extends IBaseType<B> +{ + public String getTypeName(); + + public IBaseType<B> convertToBase(); + + public IType<T, B> convertFromBase(IBaseType<B> base); +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/typebase/MetaBase.java b/src/main/java/net/corecg/transit/type/typebase/MetaBase.java new file mode 100644 index 0000000..b890e54 --- /dev/null +++ b/src/main/java/net/corecg/transit/type/typebase/MetaBase.java @@ -0,0 +1,26 @@ +package net.corecg.transit.type.typebase; + +import net.corecg.transit.type.IBaseType; + +public class MetaBase<T extends IBaseType<?>> implements IBaseType<T> +{ + private T data; + private String metaData; + + public MetaBase(T dat, String meta) + { + data = dat; + metaData = meta; + } + + public T getData() + { + return data; + } + + public String getMetaData() + { + return metaData; + } + +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/typebase/NumberBase.java b/src/main/java/net/corecg/transit/type/typebase/NumberBase.java new file mode 100644 index 0000000..5f30cf2 --- /dev/null +++ b/src/main/java/net/corecg/transit/type/typebase/NumberBase.java @@ -0,0 +1,18 @@ +package net.corecg.transit.type.typebase; + +import net.corecg.transit.type.IBaseType; + +public class NumberBase implements IBaseType<Number> +{ + private Number data; + + public NumberBase(Number dat) + { + data = dat; + } + + public Number getData() + { + return data; + } +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/typebase/StringBase.java b/src/main/java/net/corecg/transit/type/typebase/StringBase.java new file mode 100644 index 0000000..1e2e4b8 --- /dev/null +++ b/src/main/java/net/corecg/transit/type/typebase/StringBase.java @@ -0,0 +1,18 @@ +package net.corecg.transit.type.typebase; + +import net.corecg.transit.type.IBaseType; + +public class StringBase implements IBaseType<String> +{ + private String data; + + public StringBase(String dat) + { + data = dat; + } + + public String getData() + { + return data; + } +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/typegroup/TypeGroup.java b/src/main/java/net/corecg/transit/type/typegroup/TypeGroup.java new file mode 100644 index 0000000..d5a8101 --- /dev/null +++ b/src/main/java/net/corecg/transit/type/typegroup/TypeGroup.java @@ -0,0 +1,53 @@ +package net.corecg.transit.type.typegroup; + +import java.util.ArrayList; + +import net.corecg.transit.type.IType; +import net.corecg.transit.type.IBaseType; + +public class TypeGroup<B> +{ + private IBaseType<B> baseType; + + private String groupName; + + private ArrayList<IType<?, B>> types; + + /**Create a new TypeGroup + * + * @param base The base type of the group. + * @param name The identifier of the group. Should be in all caps. + */ + public TypeGroup(IBaseType<B> base, String name) + { + baseType = base; + types = new ArrayList<IType<?, B>>(0); + groupName = name; + } + + // Return the base type + public IBaseType<B> getBaseType() + { + return baseType; + } + + // Returns if the type is supported by the group + public boolean hasType(IType t) + { + + for(IType gtype : types) + { + + if(t.getTypeName() == gtype.getTypeName()) return true; + } + + return false; + } + + // Group name/identifier + public String getGroupName() + { + + return groupName; + } +}
\ No newline at end of file diff --git a/src/main/java/net/corecg/transit/type/typegroup/TypeRegister.java b/src/main/java/net/corecg/transit/type/typegroup/TypeRegister.java new file mode 100644 index 0000000..4791e5b --- /dev/null +++ b/src/main/java/net/corecg/transit/type/typegroup/TypeRegister.java @@ -0,0 +1,42 @@ +package net.corecg.transit.type.typegroup; + +import java.util.ArrayList; + +import net.corecg.transit.type.IType; + +public final class TypeRegister +{ + private TypeRegister(){} + + // Hold all the groups + private static ArrayList<TypeGroup<?>> groups = new ArrayList<TypeGroup<?>>(0); + + // Add a group + public static void addTypeGroup(TypeGroup<?> g) + { + if(getTypeGroup(g.getGroupName()) == null) return; + + groups.add(g); + } + + // Get a group by it's identifier + public static TypeGroup<?> getTypeGroup(String name) + { + for(TypeGroup<?> g : groups) + { + if(g.getGroupName().toUpperCase() == name.toUpperCase()) return g; + } + + return null; + } + + public static String groupOf(IType<?, ?> t) + { + for(TypeGroup<?> g : groups) + { + if(g.hasType(t)) return g.getGroupName(); + } + + return null; + } +}
\ No newline at end of file |