diff options
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java')
-rw-r--r-- | src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java | 109 |
1 files changed, 72 insertions, 37 deletions
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java index 0bb9af1daa..b212a51384 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java @@ -1,5 +1,7 @@ package gregtech.api.multitileentity; +import static gregtech.GT_Mod.GT_FML_LOGGER; + import appeng.core.CreativeTab; import com.gtnewhorizon.gtnhlib.util.map.ItemStackMap; import cpw.mods.fml.common.registry.GameRegistry; @@ -10,6 +12,11 @@ import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Util; import gregtech.api.util.GT_Utility; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; import net.minecraft.block.Block; import net.minecraft.init.Items; import net.minecraft.item.Item; @@ -20,14 +27,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import static gregtech.GT_Mod.GT_FML_LOGGER; - public class MultiTileEntityRegistry { private static final HashMap<String, MultiTileEntityRegistry> NAMED_REGISTRIES = new HashMap<>(); @@ -42,7 +41,8 @@ public class MultiTileEntityRegistry { public final String mNameInternal; public final MultiTileEntityBlockInternal mBlock; - private static MultiTileEntityBlockInternal regblock(String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { + private static MultiTileEntityBlockInternal regblock( + String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { GameRegistry.registerBlock(aBlock, aItemClass == null ? ItemBlock.class : aItemClass, aNameInternal); return aBlock; } @@ -57,7 +57,8 @@ public class MultiTileEntityRegistry { /** * @param aNameInternal the internal Name of the Item */ - public MultiTileEntityRegistry(String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { + public MultiTileEntityRegistry( + String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { this(aNameInternal, regblock(aNameInternal, aBlock, aItemClass)); } @@ -65,7 +66,9 @@ public class MultiTileEntityRegistry { * @param aNameInternal the internal Name of the Item */ public MultiTileEntityRegistry(String aNameInternal, MultiTileEntityBlockInternal aBlock) { - if (!GregTech_API.sPreloadStarted || GregTech_API.sPreloadFinished) throw new IllegalStateException("The MultiTileEntity Registry must be initialised during Preload Phase and not before"); + if (!GregTech_API.sPreloadStarted || GregTech_API.sPreloadFinished) + throw new IllegalStateException( + "The MultiTileEntity Registry must be initialised during Preload Phase and not before"); mNameInternal = aNameInternal; mBlock = aBlock; mBlock.mMultiTileEntityRegistry = this; @@ -84,6 +87,7 @@ public class MultiTileEntityRegistry { public static MultiTileEntityRegistry getRegistry(int aRegistryID) { return REGISTRIES.get(new ItemStack(Item.getItemById(aRegistryID), 1, GT_Values.W)); } + public static MultiTileEntityRegistry getRegistry(String aRegistryName) { return NAMED_REGISTRIES.get(aRegistryName); } @@ -116,18 +120,23 @@ public class MultiTileEntityRegistry { tFailed = true; } if (mRegistry.containsKey(aClassContainer.mID)) { - GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container uses occupied MetaData! (" + aClassContainer.mID + ")"); + GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container uses occupied MetaData! (" + + aClassContainer.mID + ")"); tFailed = true; } } if (tFailed) { GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: STACKTRACE START"); - int i = 0; for (StackTraceElement tElement : new Exception().getStackTrace()) if (i++<5 && !tElement.getClassName().startsWith("sun")) GT_FML_LOGGER.error("\tat " + tElement); else break; + int i = 0; + for (StackTraceElement tElement : new Exception().getStackTrace()) + if (i++ < 5 && !tElement.getClassName().startsWith("sun")) GT_FML_LOGGER.error("\tat " + tElement); + else break; GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: STACKTRACE END"); return null; } - GT_LanguageManager.addStringLocalization(mNameInternal+"."+aClassContainer.mID+".name", aLocalised, false); + GT_LanguageManager.addStringLocalization( + mNameInternal + "." + aClassContainer.mID + ".name", aLocalised, false); mRegistry.put(aClassContainer.mID, aClassContainer); mLastRegisteredID = aClassContainer.mID; mRegistrations.add(aClassContainer); @@ -135,34 +144,49 @@ public class MultiTileEntityRegistry { if (sRegisteredTileEntities.add(aClassContainer.mCanonicalTileEntity.getClass())) { aClassContainer.mCanonicalTileEntity.onRegistrationFirst(this, aClassContainer.mID); } -// // TODO: Recipe -// if (aRecipe != null && aRecipe.length > 1) { -// if (aRecipe[0] instanceof Object[]) aRecipe = (Object[])aRecipe[0]; -// if (aRecipe.length > 2) CR.shaped(getItem(aClassContainer.mID), CR.DEF_REV_NCC, aRecipe); -// } -// // A simple special case to make it easier to add a Machine to Recipe Lists without having to worry about anything. -// String tRecipeMapName = aClassContainer.mParameters.getString(NBT_RECIPEMAP); -// if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} -// tRecipeMapName = aClassContainer.mParameters.getString(NBT_FUELMAP); -// if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} -// + // // TODO: Recipe + // if (aRecipe != null && aRecipe.length > 1) { + // if (aRecipe[0] instanceof Object[]) aRecipe = (Object[])aRecipe[0]; + // if (aRecipe.length > 2) CR.shaped(getItem(aClassContainer.mID), CR.DEF_REV_NCC, aRecipe); + // } + // // A simple special case to make it easier to add a Machine to Recipe Lists without having to worry + // about anything. + // String tRecipeMapName = aClassContainer.mParameters.getString(NBT_RECIPEMAP); + // if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = + // RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) + // tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} + // tRecipeMapName = aClassContainer.mParameters.getString(NBT_FUELMAP); + // if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = + // RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) + // tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} + // return getItem(aClassContainer.mID); } public short mLastRegisteredID = GT_Values.W; + public ItemStack getItem() { + return getItem(mLastRegisteredID, 1, null); + } - public ItemStack getItem() {return getItem(mLastRegisteredID, 1, null);} - public ItemStack getItem(int aID) {return getItem(aID, 1, null);} - public ItemStack getItem(int aID, NBTTagCompound aNBT) {return getItem(aID, 1, aNBT);} - public ItemStack getItem(int aID, long aAmount) {return getItem(aID, aAmount, null);} + public ItemStack getItem(int aID) { + return getItem(aID, 1, null); + } + + public ItemStack getItem(int aID, NBTTagCompound aNBT) { + return getItem(aID, 1, aNBT); + } + + public ItemStack getItem(int aID, long aAmount) { + return getItem(aID, aAmount, null); + } public ItemStack getItem(int aID, long aAmount, NBTTagCompound aNBT) { - final ItemStack rStack = new ItemStack(mBlock, (int)aAmount, aID); + final ItemStack rStack = new ItemStack(mBlock, (int) aAmount, aID); if (aNBT == null || aNBT.hasNoTags()) { aNBT = new NBTTagCompound(); final MultiTileEntityContainer tTileEntityContainer = getNewTileEntityContainer(aID, aNBT); - if (tTileEntityContainer != null) ((IMultiTileEntity)tTileEntityContainer.mTileEntity).writeItemNBT(aNBT); + if (tTileEntityContainer != null) ((IMultiTileEntity) tTileEntityContainer.mTileEntity).writeItemNBT(aNBT); } rStack.setTagCompound(aNBT); return rStack; @@ -185,16 +209,26 @@ public class MultiTileEntityRegistry { return tContainer == null ? null : (TileEntity) tContainer.mTileEntity; } - public MultiTileEntityContainer getNewTileEntityContainer(World aWorld, int aX, int aY, int aZ, int aID, NBTTagCompound aNBT) { + public MultiTileEntityContainer getNewTileEntityContainer( + World aWorld, int aX, int aY, int aZ, int aID, NBTTagCompound aNBT) { final MultiTileEntityClassContainer tClass = mRegistry.get((short) aID); if (tClass == null || tClass.mBlock == null) return null; - final MultiTileEntityContainer rContainer = new MultiTileEntityContainer((TileEntity) GT_Utility.callConstructor(tClass.mClass, -1, null, true), tClass.mBlock, tClass.mBlockMetaData); + final MultiTileEntityContainer rContainer = new MultiTileEntityContainer( + (TileEntity) GT_Utility.callConstructor(tClass.mClass, -1, null, true), + tClass.mBlock, + tClass.mBlockMetaData); if (rContainer.mTileEntity == null) return null; rContainer.mTileEntity.setWorldObj(aWorld); rContainer.mTileEntity.xCoord = aX; rContainer.mTileEntity.yCoord = aY; rContainer.mTileEntity.zCoord = aZ; - ((IMultiTileEntity) rContainer.mTileEntity).initFromNBT(aNBT == null || aNBT.hasNoTags() ? tClass.mParameters : GT_Util.fuseNBT(aNBT, tClass.mParameters), (short) aID, (short) Block.getIdFromBlock(mBlock)); + ((IMultiTileEntity) rContainer.mTileEntity) + .initFromNBT( + aNBT == null || aNBT.hasNoTags() + ? tClass.mParameters + : GT_Util.fuseNBT(aNBT, tClass.mParameters), + (short) aID, + (short) Block.getIdFromBlock(mBlock)); return rContainer; } @@ -204,12 +238,14 @@ public class MultiTileEntityRegistry { } public TileEntity getNewTileEntity(ItemStack aStack) { - final MultiTileEntityContainer tContainer = getNewTileEntityContainer(null, 0, 0, 0, Items.feather.getDamage(aStack), aStack.getTagCompound()); + final MultiTileEntityContainer tContainer = + getNewTileEntityContainer(null, 0, 0, 0, Items.feather.getDamage(aStack), aStack.getTagCompound()); return tContainer == null ? null : tContainer.mTileEntity; } public TileEntity getNewTileEntity(World aWorld, int aX, int aY, int aZ, ItemStack aStack) { - final MultiTileEntityContainer tContainer = getNewTileEntityContainer(aWorld, aX, aY, aZ, Items.feather.getDamage(aStack), aStack.getTagCompound()); + final MultiTileEntityContainer tContainer = + getNewTileEntityContainer(aWorld, aX, aY, aZ, Items.feather.getDamage(aStack), aStack.getTagCompound()); return tContainer == null ? null : tContainer.mTileEntity; } @@ -224,5 +260,4 @@ public class MultiTileEntityRegistry { public MultiTileEntityContainer getNewTileEntityContainer(int aID, NBTTagCompound aNBT) { return getNewTileEntityContainer(null, 0, 0, 0, aID, aNBT); } - } |