aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/github/technus/tectech/loader/ConstructableLoader.java10
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/constructable/IMultiblockInfoContainer.java19
-rw-r--r--src/main/java/com/github/technus/tectech/thing/item/ConstructableTriggerItem.java31
3 files changed, 34 insertions, 26 deletions
diff --git a/src/main/java/com/github/technus/tectech/loader/ConstructableLoader.java b/src/main/java/com/github/technus/tectech/loader/ConstructableLoader.java
index 665889dc1f..2cd4f04fc8 100644
--- a/src/main/java/com/github/technus/tectech/loader/ConstructableLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/ConstructableLoader.java
@@ -6,17 +6,16 @@ import com.github.technus.tectech.mechanics.structure.Structure;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_ElectricBlastFurnace;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
-import static com.github.technus.tectech.mechanics.constructable.IMultiblockInfoContainer.*;
+import static com.github.technus.tectech.mechanics.constructable.IMultiblockInfoContainer.registerMetaClass;
import static gregtech.api.GregTech_API.sBlockCasings1;
public class ConstructableLoader implements Runnable {
@Override
public void run() {
- registerMetaClass(GT_MetaTileEntity_ElectricBlastFurnace.class, new IMultiblockInfoContainer() {
+ registerMetaClass(GT_MetaTileEntity_ElectricBlastFurnace.class, new IMultiblockInfoContainer<GT_MetaTileEntity_ElectricBlastFurnace>() {
//region Structure
private final String[][] shape = new String[][]{
{"000","\"\"\"","\"\"\""," . ",},
@@ -34,8 +33,9 @@ public class ConstructableLoader implements Runnable {
//endregion
@Override
- public void construct(ItemStack stackSize, boolean hintsOnly, TileEntity tileEntity, ExtendedFacing aSide) {
- Structure.builder(shape, blockType, blockMeta, 1, 3, 0, tileEntity, aSide, hintsOnly);
+ public void construct(ItemStack stackSize, boolean hintsOnly, GT_MetaTileEntity_ElectricBlastFurnace tileEntity, ExtendedFacing aSide) {
+ Structure.builder(shape, blockType, blockMeta, 1, 3, 0,
+ tileEntity.getBaseMetaTileEntity(), aSide, hintsOnly);
}
@Override
diff --git a/src/main/java/com/github/technus/tectech/mechanics/constructable/IMultiblockInfoContainer.java b/src/main/java/com/github/technus/tectech/mechanics/constructable/IMultiblockInfoContainer.java
index 2506342f72..173e0d16ec 100644
--- a/src/main/java/com/github/technus/tectech/mechanics/constructable/IMultiblockInfoContainer.java
+++ b/src/main/java/com/github/technus/tectech/mechanics/constructable/IMultiblockInfoContainer.java
@@ -12,18 +12,27 @@ import java.util.HashMap;
/**
* To implement IConstructable on not own TileEntities
*/
-public interface IMultiblockInfoContainer {
- HashMap<String, IMultiblockInfoContainer> MULTIBLOCK_MAP = new HashMap<>();
+public interface IMultiblockInfoContainer<T> {
+ HashMap<String, IMultiblockInfoContainer<?>> MULTIBLOCK_MAP = new HashMap<>();
- static void registerTileClass(Class<? extends TileEntity> clazz, IMultiblockInfoContainer info){
+ static <T extends TileEntity> void registerTileClass(Class<T> clazz, IMultiblockInfoContainer<?> info){
MULTIBLOCK_MAP.put(clazz.getCanonicalName(),info);
}
- static void registerMetaClass(Class<? extends IMetaTileEntity> clazz, IMultiblockInfoContainer info){
+ static <T extends IMetaTileEntity> void registerMetaClass(Class<T> clazz, IMultiblockInfoContainer<?> info){
MULTIBLOCK_MAP.put(clazz.getCanonicalName(),info);
}
- void construct(ItemStack stackSize, boolean hintsOnly, TileEntity tileEntity, ExtendedFacing aSide);
+ @SuppressWarnings("unchecked")
+ static <T> IMultiblockInfoContainer<T> get(Class<?> tClass){
+ return (IMultiblockInfoContainer<T>)MULTIBLOCK_MAP.get(tClass.getCanonicalName());
+ }
+
+ static boolean contains(Class<?> tClass){
+ return MULTIBLOCK_MAP.containsKey(tClass.getCanonicalName());
+ }
+
+ void construct(ItemStack stackSize, boolean hintsOnly, T tileEntity, ExtendedFacing aSide);
@SideOnly(Side.CLIENT)
String[] getDescription(ItemStack stackSize);
diff --git a/src/main/java/com/github/technus/tectech/thing/item/ConstructableTriggerItem.java b/src/main/java/com/github/technus/tectech/thing/item/ConstructableTriggerItem.java
index 4160ae2aba..c24b35f8d5 100644
--- a/src/main/java/com/github/technus/tectech/thing/item/ConstructableTriggerItem.java
+++ b/src/main/java/com/github/technus/tectech/thing/item/ConstructableTriggerItem.java
@@ -23,7 +23,6 @@ import java.util.List;
import static com.github.technus.tectech.Reference.MODID;
import static com.github.technus.tectech.loader.gui.CreativeTabTecTech.creativeTabTecTech;
-import static com.github.technus.tectech.mechanics.constructable.IMultiblockInfoContainer.MULTIBLOCK_MAP;
import static net.minecraft.util.StatCollector.translateToLocal;
/**
@@ -51,20 +50,20 @@ public final class ConstructableTriggerItem extends Item {
IMetaTileEntity metaTE = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity();
if (metaTE instanceof IConstructable) {
((IConstructable) metaTE).construct(aStack, false);
- } else if (MULTIBLOCK_MAP.containsKey(metaTE.getClass().getCanonicalName())) {
- IMultiblockInfoContainer iMultiblockInfoContainer = MULTIBLOCK_MAP.get(metaTE.getClass().getCanonicalName());
+ } else if (IMultiblockInfoContainer.contains(metaTE.getClass())) {
+ IMultiblockInfoContainer<IMetaTileEntity> iMultiblockInfoContainer =IMultiblockInfoContainer.get(metaTE.getClass());
if(metaTE instanceof IAlignment){
- iMultiblockInfoContainer.construct(aStack, false, tTileEntity, (
+ iMultiblockInfoContainer.construct(aStack, false, metaTE, (
(IAlignment) metaTE).getExtendedFacing());
}else {
- iMultiblockInfoContainer.construct(aStack, false, tTileEntity,
+ iMultiblockInfoContainer.construct(aStack, false, metaTE,
ExtendedFacing.of(ForgeDirection.getOrientation(((IGregTechTileEntity) tTileEntity).getFrontFacing())));
}
}
} else if (tTileEntity instanceof IConstructable) {
((IConstructable) tTileEntity).construct(aStack, false);
- } else if (MULTIBLOCK_MAP.containsKey(tTileEntity.getClass().getCanonicalName())) {
- IMultiblockInfoContainer iMultiblockInfoContainer = MULTIBLOCK_MAP.get(tTileEntity.getClass().getCanonicalName());
+ } else if (IMultiblockInfoContainer.contains(tTileEntity.getClass())) {
+ IMultiblockInfoContainer<TileEntity> iMultiblockInfoContainer =IMultiblockInfoContainer.get(tTileEntity.getClass());
if(tTileEntity instanceof IAlignment){
iMultiblockInfoContainer.construct(aStack, false, tTileEntity,
((IAlignment) tTileEntity).getExtendedFacing());
@@ -83,24 +82,24 @@ public final class ConstructableTriggerItem extends Item {
((IConstructable) metaTE).construct(aStack, true);
TecTech.proxy.printInchat(((IConstructable) metaTE).getStructureDescription(aStack));
return false;
- } else if(MULTIBLOCK_MAP.containsKey(metaTE.getClass().getCanonicalName())){
- IMultiblockInfoContainer iMultiblockInfoContainer = MULTIBLOCK_MAP.get(metaTE.getClass().getCanonicalName());
+ } else if(IMultiblockInfoContainer.contains(metaTE.getClass())){
+ IMultiblockInfoContainer<IMetaTileEntity> iMultiblockInfoContainer =IMultiblockInfoContainer.get(metaTE.getClass());
if(metaTE instanceof IAlignment){
- iMultiblockInfoContainer.construct(aStack, true, tTileEntity, (
- (IAlignment) metaTE).getExtendedFacing());
+ iMultiblockInfoContainer.construct(aStack, true, metaTE,
+ ((IAlignment) metaTE).getExtendedFacing());
}else {
- iMultiblockInfoContainer.construct(aStack, true, tTileEntity,
+ iMultiblockInfoContainer.construct(aStack, true, metaTE,
ExtendedFacing.of(ForgeDirection.getOrientation(((IGregTechTileEntity) tTileEntity).getFrontFacing())));
}
- TecTech.proxy.printInchat(MULTIBLOCK_MAP.get(metaTE.getClass().getCanonicalName()).getDescription(aStack));
+ TecTech.proxy.printInchat(IMultiblockInfoContainer.get(metaTE.getClass()).getDescription(aStack));
return false;
}
} else if(tTileEntity instanceof IConstructable){
((IConstructable) tTileEntity).construct(aStack,true);
TecTech.proxy.printInchat(((IConstructable) tTileEntity).getStructureDescription(aStack));
return false;
- } else if(MULTIBLOCK_MAP.containsKey(tTileEntity.getClass().getCanonicalName())){
- IMultiblockInfoContainer iMultiblockInfoContainer = MULTIBLOCK_MAP.get(tTileEntity.getClass().getCanonicalName());
+ } else if(IMultiblockInfoContainer.contains(tTileEntity.getClass())){
+ IMultiblockInfoContainer<TileEntity> iMultiblockInfoContainer = IMultiblockInfoContainer.get(tTileEntity.getClass());
if(tTileEntity instanceof IAlignment){
iMultiblockInfoContainer.construct(aStack, true, tTileEntity,
((IAlignment) tTileEntity).getExtendedFacing());
@@ -108,7 +107,7 @@ public final class ConstructableTriggerItem extends Item {
iMultiblockInfoContainer.construct(aStack, true, tTileEntity,
ExtendedFacing.of(ForgeDirection.getOrientation(aSide)));
}
- TecTech.proxy.printInchat(MULTIBLOCK_MAP.get(tTileEntity.getClass().getCanonicalName()).getDescription(aStack));
+ TecTech.proxy.printInchat(IMultiblockInfoContainer.get(tTileEntity.getClass()).getDescription(aStack));
return false;
}
//} else {