From 123aa6ed288b2f67b0d47177f4d27cd6893daf3a Mon Sep 17 00:00:00 2001 From: Shawn Buckley Date: Wed, 21 Oct 2015 22:15:09 -0400 Subject: Reformat code --- src/main/java/gregtech/api/util/GT_BaseCrop.java | 209 +- .../gregtech/api/util/GT_CircuitryBehavior.java | 321 +- src/main/java/gregtech/api/util/GT_Config.java | 152 +- .../java/gregtech/api/util/GT_CoverBehavior.java | 409 +-- .../java/gregtech/api/util/GT_CreativeTab.java | 22 +- src/main/java/gregtech/api/util/GT_FoodStat.java | 173 +- .../java/gregtech/api/util/GT_IBoxableWrapper.java | 8 +- .../api/util/GT_ItsNotMyFaultException.java | 24 +- .../java/gregtech/api/util/GT_LanguageManager.java | 166 +- src/main/java/gregtech/api/util/GT_Log.java | 33 +- src/main/java/gregtech/api/util/GT_ModHandler.java | 3319 ++++++++++--------- .../gregtech/api/util/GT_OreDictUnificator.java | 549 ++-- .../java/gregtech/api/util/GT_PlayedSound.java | 44 +- src/main/java/gregtech/api/util/GT_Recipe.java | 2251 +++++++------ .../gregtech/api/util/GT_RecipeRegistrator.java | 607 ++-- .../java/gregtech/api/util/GT_Shaped_Recipe.java | 165 +- .../gregtech/api/util/GT_Shapeless_Recipe.java | 165 +- .../gregtech/api/util/GT_SpawnEventHandler.java | 67 +- src/main/java/gregtech/api/util/GT_Utility.java | 3450 ++++++++++---------- 19 files changed, 6359 insertions(+), 5775 deletions(-) (limited to 'src/main/java/gregtech/api/util') diff --git a/src/main/java/gregtech/api/util/GT_BaseCrop.java b/src/main/java/gregtech/api/util/GT_BaseCrop.java index e7cef2c598..4b0e4a5526 100644 --- a/src/main/java/gregtech/api/util/GT_BaseCrop.java +++ b/src/main/java/gregtech/api/util/GT_BaseCrop.java @@ -1,129 +1,130 @@ package gregtech.api.util; -import static gregtech.api.enums.GT_Values.E; import gregtech.api.enums.ConfigCategories; import ic2.api.crops.CropCard; import ic2.api.crops.Crops; import ic2.api.crops.ICropTile; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; import java.util.ArrayList; import java.util.Random; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; +import static gregtech.api.enums.GT_Values.E; public class GT_BaseCrop extends CropCard { - private String mName = E, mDiscoveredBy = "Gregorius Techneticies", mAttributes[]; - private int mTier = 0, mMaxSize = 0, mAfterHarvestSize = 0, mHarvestSize = 0, mStats[] = new int[5]; - private ItemStack mDrop = null, mSpecialDrops[] = null; - - public static ArrayList sCropList = new ArrayList(); - - /** - * To create new Crops - * @param aID Default ID - * @param aCropName Name of the Crop - * @param aDiscoveredBy The one who discovered the Crop - * @param aDrop The Item which is dropped by the Crop. must be != null - * @param aBaseSeed Baseseed to plant this Crop. null == crossbreed only - * @param aTier tier of the Crop. forced to be >= 1 - * @param aMaxSize maximum Size of the Crop. forced to be >= 3 - * @param aGrowthSpeed how fast the Crop grows. if < 0 then its set to Tier*300 - * @param aHarvestSize the size the Crop needs to be harvested. forced to be between 2 and max size - */ - public GT_BaseCrop(int aID, String aCropName, String aDiscoveredBy, ItemStack aDrop, ItemStack[] aSpecialDrops, ItemStack aBaseSeed, int aTier, int aMaxSize, int aGrowthSpeed, int aAfterHarvestSize, int aHarvestSize, int aStatChemical, int aStatFood, int aStatDefensive, int aStatColor, int aStatWeed, String[] aAttributes) { - mName = aCropName; - aID = GT_Config.addIDConfig(ConfigCategories.IDs.crops, mName.replaceAll(" ", "_"), aID); - if (aDiscoveredBy != null && !aDiscoveredBy.equals(E)) mDiscoveredBy = aDiscoveredBy; - if (aDrop != null && aID > 0 && aID < 256) { - mDrop = GT_Utility.copy(aDrop); - mSpecialDrops = aSpecialDrops; - mTier = Math.max(1, aTier); - mMaxSize = Math.max(3, aMaxSize); + public static ArrayList sCropList = new ArrayList(); + private String mName = E, mDiscoveredBy = "Gregorius Techneticies", mAttributes[]; + private int mTier = 0, mMaxSize = 0, mAfterHarvestSize = 0, mHarvestSize = 0, mStats[] = new int[5]; + private ItemStack mDrop = null, mSpecialDrops[] = null; + + /** + * To create new Crops + * + * @param aID Default ID + * @param aCropName Name of the Crop + * @param aDiscoveredBy The one who discovered the Crop + * @param aDrop The Item which is dropped by the Crop. must be != null + * @param aBaseSeed Baseseed to plant this Crop. null == crossbreed only + * @param aTier tier of the Crop. forced to be >= 1 + * @param aMaxSize maximum Size of the Crop. forced to be >= 3 + * @param aGrowthSpeed how fast the Crop grows. if < 0 then its set to Tier*300 + * @param aHarvestSize the size the Crop needs to be harvested. forced to be between 2 and max size + */ + public GT_BaseCrop(int aID, String aCropName, String aDiscoveredBy, ItemStack aDrop, ItemStack[] aSpecialDrops, ItemStack aBaseSeed, int aTier, int aMaxSize, int aGrowthSpeed, int aAfterHarvestSize, int aHarvestSize, int aStatChemical, int aStatFood, int aStatDefensive, int aStatColor, int aStatWeed, String[] aAttributes) { + mName = aCropName; + aID = GT_Config.addIDConfig(ConfigCategories.IDs.crops, mName.replaceAll(" ", "_"), aID); + if (aDiscoveredBy != null && !aDiscoveredBy.equals(E)) mDiscoveredBy = aDiscoveredBy; + if (aDrop != null && aID > 0 && aID < 256) { + mDrop = GT_Utility.copy(aDrop); + mSpecialDrops = aSpecialDrops; + mTier = Math.max(1, aTier); + mMaxSize = Math.max(3, aMaxSize); // mGrowthSpeed = aGrowthSpeed>0?aGrowthSpeed:mTier*300; - mHarvestSize = Math.min(Math.max(aHarvestSize, 2), mMaxSize); - mAfterHarvestSize = Math.min(Math.max(aAfterHarvestSize, 1), mMaxSize-1); - mStats[0] = aStatChemical; - mStats[1] = aStatFood; - mStats[2] = aStatDefensive; - mStats[3] = aStatColor; - mStats[4] = aStatWeed; - mAttributes = aAttributes; - if (!Crops.instance.registerCrop(this, aID)) throw new GT_ItsNotMyFaultException("Make sure the Crop ID is valid!"); - if (aBaseSeed != null) Crops.instance.registerBaseSeed(aBaseSeed, aID, 1, 1, 1, 1); - sCropList.add(this); - } - } - - @Override - public byte getSizeAfterHarvest(ICropTile crop) { - return (byte)mAfterHarvestSize; - } - - @Override + mHarvestSize = Math.min(Math.max(aHarvestSize, 2), mMaxSize); + mAfterHarvestSize = Math.min(Math.max(aAfterHarvestSize, 1), mMaxSize - 1); + mStats[0] = aStatChemical; + mStats[1] = aStatFood; + mStats[2] = aStatDefensive; + mStats[3] = aStatColor; + mStats[4] = aStatWeed; + mAttributes = aAttributes; + if (!Crops.instance.registerCrop(this, aID)) + throw new GT_ItsNotMyFaultException("Make sure the Crop ID is valid!"); + if (aBaseSeed != null) Crops.instance.registerBaseSeed(aBaseSeed, aID, 1, 1, 1, 1); + sCropList.add(this); + } + } + + @Override + public byte getSizeAfterHarvest(ICropTile crop) { + return (byte) mAfterHarvestSize; + } + + @Override public String[] attributes() { - return mAttributes; - } - - @Override - public String discoveredBy() { - return mDiscoveredBy; - } - - @Override + return mAttributes; + } + + @Override + public String discoveredBy() { + return mDiscoveredBy; + } + + @Override public final boolean canGrow(ICropTile aCrop) { - return aCrop.getSize() < maxSize(); + return aCrop.getSize() < maxSize(); } - - @Override + + @Override public final boolean canBeHarvested(ICropTile aCrop) { return aCrop.getSize() >= mHarvestSize; } - - @Override - public boolean canCross(ICropTile aCrop) { - return aCrop.getSize() + 2 > maxSize(); - } - - @Override + + @Override + public boolean canCross(ICropTile aCrop) { + return aCrop.getSize() + 2 > maxSize(); + } + + @Override public int stat(int n) { - if (n < 0 || n >= mStats.length) return 0; - return mStats[n]; + if (n < 0 || n >= mStats.length) return 0; + return mStats[n]; + } + + @Override + public String name() { + return mName; + } + + @Override + public int tier() { + return mTier; + } + + @Override + public int maxSize() { + return mMaxSize; } - - @Override - public String name() { - return mName; - } - - @Override - public int tier() { - return mTier; - } - - @Override - public int maxSize() { - return mMaxSize; - } - - @Override - public ItemStack getGain(ICropTile aCrop) { - int tDrop = 0; - if (mSpecialDrops != null && (tDrop = new Random().nextInt(mSpecialDrops.length+4)) < mSpecialDrops.length && mSpecialDrops[tDrop] != null) { - return GT_Utility.copy(mSpecialDrops[tDrop]); - } - return GT_Utility.copy(mDrop); - } - + + @Override + public ItemStack getGain(ICropTile aCrop) { + int tDrop = 0; + if (mSpecialDrops != null && (tDrop = new Random().nextInt(mSpecialDrops.length + 4)) < mSpecialDrops.length && mSpecialDrops[tDrop] != null) { + return GT_Utility.copy(mSpecialDrops[tDrop]); + } + return GT_Utility.copy(mDrop); + } + @Override public boolean rightclick(ICropTile aCrop, EntityPlayer aPlayer) { - if (!canBeHarvested(aCrop)) return false; - return aCrop.harvest(aPlayer==null?false:aPlayer instanceof EntityPlayerMP); + if (!canBeHarvested(aCrop)) return false; + return aCrop.harvest(aPlayer == null ? false : aPlayer instanceof EntityPlayerMP); + } + + @Override + public int getOptimalHavestSize(ICropTile crop) { + return maxSize(); } - - @Override - public int getOptimalHavestSize(ICropTile crop) { - return maxSize(); - } } diff --git a/src/main/java/gregtech/api/util/GT_CircuitryBehavior.java b/src/main/java/gregtech/api/util/GT_CircuitryBehavior.java index 6cda3c202f..4adf7e0f26 100644 --- a/src/main/java/gregtech/api/util/GT_CircuitryBehavior.java +++ b/src/main/java/gregtech/api/util/GT_CircuitryBehavior.java @@ -1,178 +1,181 @@ package gregtech.api.util; -import gregtech.api.GregTech_API; -import gregtech.api.interfaces.IRedstoneCircuitBlock; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.IRedstoneCircuitBlock; /** * Redstone Circuit Control Code - * + *

* This should make everything possible what a Redstone Computer or BuildCraft Gate could do. * It is intended to use this similar to BC-Gates (for acquiring Data) and RP Logic Gates. * You could write an extremely specified and complex Logic Gate, which works only for you Setup, like * with ComputerCraft, but you would have to write an extra Mod to add that, as it doesn't work Ingame. - * + *

* One can make use of the fact, that ItemStacks can be stored as Integer, so that you can scan * Inventories for specific Items using that. Luckily the Buttons in the GUI enable Copy/Paste of * ItemID+MetaData to Integer, including the WildCard Damage Value when you use rightclick to place it. * You just need to use @GT_Utility.stackToInt(ItemStack aStack) to get it. - * + *

* All Functions run usually in a seperate try/catch Block, so that failed Logic won't crash the TileEntity. */ public abstract class GT_CircuitryBehavior { - /** - * @param aIndex 0 - 1023 are my own Indices, so use other Numbers! - */ - public GT_CircuitryBehavior(int aIndex) { - GregTech_API.sCircuitryBehaviors.put(aIndex, this); - } - - /** - * Initializes the Parameters of this Circuit, all Parameters have been set to 0 right before calling this - * @param aCircuitData, The Data Storage you can use (8 Slots) - * @param aRedstoneCircuitBlock, The Circuit Block MetaTileEntity itself - */ - public abstract void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock); - - /** - * Validates the Parameters of this Circuit when a value has been changed by the GUI - * Also called right after @initParameters and when the Chunk reloads - * @param aCircuitData, The Data Storage you can use (8 Slots and only the first 4 are User definable) - * @param aRedstoneCircuitBlock, The Circuit Block MetaTileEntity itself - */ - public abstract void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock); - - /** - * Called every tick if the Block has enough Energy and if the Block is Active - * @param aCircuitData, The Data Storage you can use (8 Slots) - * @param aRedstoneCircuitBlock, The Circuit Block MetaTileEntity itself - */ - public abstract void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock); - - /** - * If the ItemStack should be displayed. Parameters are between 0 and 3. - */ - public abstract boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex); - - /***************** - * GUI Functions * - *****************/ - - /** - * The Name of the Gate for the GUI - */ - @SideOnly(Side.CLIENT) - public abstract String getName(); - - /** - * The Description of the Gate for the GUI - */ - @SideOnly(Side.CLIENT) - public abstract String getDescription(); - - /** - * The Description of the Data Field for the GUI - */ - @SideOnly(Side.CLIENT) - public abstract String getDataDescription(int[] aCircuitData, int aCircuitDataIndex); - - /** - * How the Integer should be displayed in the GUI. - * null means, that it just displays as regular Number. - */ - @SideOnly(Side.CLIENT) - public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex) { - return null; - } - - - /**************************** - * Useful Utility Functions * - ****************************/ - - /** - * returns if there is Redstone applied to any of the valid Inputs (OR) - */ - public static final boolean getAnyRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { - for (byte i = 0; i < 6; i++) { - if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { - if (aRedstoneCircuitBlock.getInputRedstone(i) > 0) { - return true; - } - } - } - return false; - } - - /** - * returns if there is Redstone applied to all the valid Inputs (AND) - */ - public static final boolean getAllRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { - for (byte i = 0; i < 6; i++) { - if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { - if (aRedstoneCircuitBlock.getInputRedstone(i) == 0) { - return false; - } - } - } - return true; - } - - /** - * returns if there is Redstone applied to exactly one of the valid Inputs (XOR) - */ - public static final boolean getOneRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { - int tRedstoneAmount = 0; - for (byte i = 0; i < 6; i++) { - if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { - if (aRedstoneCircuitBlock.getInputRedstone(i) > 0) { - tRedstoneAmount++; - } - } - } - return tRedstoneAmount == 1; - } - - /** - * returns the strongest incoming RS-Power - */ - public static final byte getStrongestRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { - byte tRedstoneAmount = 0; - for (byte i = 0; i < 6; i++) { - if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { - tRedstoneAmount = (byte)Math.max(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(i)); - } - } - return tRedstoneAmount; - } - - /** - * returns the weakest incoming non-zero RS-Power - */ - public static final byte getWeakestNonZeroRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { - if (!getAnyRedstone(aRedstoneCircuitBlock)) return 0; - byte tRedstoneAmount = 15; - for (byte i = 0; i < 6; i++) { - if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { - if (aRedstoneCircuitBlock.getInputRedstone(i) > 0) - tRedstoneAmount = (byte)Math.min(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(i)); - } - } - return tRedstoneAmount; - } - - /** - * returns the weakest incoming RS-Power - */ - public static final byte getWeakestRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { - if (!getAnyRedstone(aRedstoneCircuitBlock)) return 0; - byte tRedstoneAmount = 15; - for (byte i = 0; i < 6; i++) { - if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { - tRedstoneAmount = (byte)Math.min(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(i)); - } - } - return tRedstoneAmount; - } + /** + * @param aIndex 0 - 1023 are my own Indices, so use other Numbers! + */ + public GT_CircuitryBehavior(int aIndex) { + GregTech_API.sCircuitryBehaviors.put(aIndex, this); + } + + /** + * returns if there is Redstone applied to any of the valid Inputs (OR) + */ + public static final boolean getAnyRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { + for (byte i = 0; i < 6; i++) { + if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { + if (aRedstoneCircuitBlock.getInputRedstone(i) > 0) { + return true; + } + } + } + return false; + } + + /** + * returns if there is Redstone applied to all the valid Inputs (AND) + */ + public static final boolean getAllRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { + for (byte i = 0; i < 6; i++) { + if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { + if (aRedstoneCircuitBlock.getInputRedstone(i) == 0) { + return false; + } + } + } + return true; + } + + /** + * returns if there is Redstone applied to exactly one of the valid Inputs (XOR) + */ + public static final boolean getOneRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { + int tRedstoneAmount = 0; + for (byte i = 0; i < 6; i++) { + if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { + if (aRedstoneCircuitBlock.getInputRedstone(i) > 0) { + tRedstoneAmount++; + } + } + } + return tRedstoneAmount == 1; + } + + /** + * returns the strongest incoming RS-Power + */ + public static final byte getStrongestRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { + byte tRedstoneAmount = 0; + for (byte i = 0; i < 6; i++) { + if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { + tRedstoneAmount = (byte) Math.max(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(i)); + } + } + return tRedstoneAmount; + } + + /***************** + * GUI Functions * + *****************/ + + /** + * returns the weakest incoming non-zero RS-Power + */ + public static final byte getWeakestNonZeroRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { + if (!getAnyRedstone(aRedstoneCircuitBlock)) return 0; + byte tRedstoneAmount = 15; + for (byte i = 0; i < 6; i++) { + if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { + if (aRedstoneCircuitBlock.getInputRedstone(i) > 0) + tRedstoneAmount = (byte) Math.min(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(i)); + } + } + return tRedstoneAmount; + } + + /** + * returns the weakest incoming RS-Power + */ + public static final byte getWeakestRedstone(IRedstoneCircuitBlock aRedstoneCircuitBlock) { + if (!getAnyRedstone(aRedstoneCircuitBlock)) return 0; + byte tRedstoneAmount = 15; + for (byte i = 0; i < 6; i++) { + if (i != aRedstoneCircuitBlock.getOutputFacing() && aRedstoneCircuitBlock.getCover(i).letsRedstoneGoIn(i, aRedstoneCircuitBlock.getCoverID(i), aRedstoneCircuitBlock.getCoverVariable(i), aRedstoneCircuitBlock.getOwnTileEntity())) { + tRedstoneAmount = (byte) Math.min(tRedstoneAmount, aRedstoneCircuitBlock.getInputRedstone(i)); + } + } + return tRedstoneAmount; + } + + /** + * Initializes the Parameters of this Circuit, all Parameters have been set to 0 right before calling this + * + * @param aCircuitData, The Data Storage you can use (8 Slots) + * @param aRedstoneCircuitBlock, The Circuit Block MetaTileEntity itself + */ + public abstract void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock); + + /** + * Validates the Parameters of this Circuit when a value has been changed by the GUI + * Also called right after @initParameters and when the Chunk reloads + * + * @param aCircuitData, The Data Storage you can use (8 Slots and only the first 4 are User definable) + * @param aRedstoneCircuitBlock, The Circuit Block MetaTileEntity itself + */ + public abstract void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock); + + + /**************************** + * Useful Utility Functions * + ****************************/ + + /** + * Called every tick if the Block has enough Energy and if the Block is Active + * + * @param aCircuitData, The Data Storage you can use (8 Slots) + * @param aRedstoneCircuitBlock, The Circuit Block MetaTileEntity itself + */ + public abstract void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock); + + /** + * If the ItemStack should be displayed. Parameters are between 0 and 3. + */ + public abstract boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex); + + /** + * The Name of the Gate for the GUI + */ + @SideOnly(Side.CLIENT) + public abstract String getName(); + + /** + * The Description of the Gate for the GUI + */ + @SideOnly(Side.CLIENT) + public abstract String getDescription(); + + /** + * The Description of the Data Field for the GUI + */ + @SideOnly(Side.CLIENT) + public abstract String getDataDescription(int[] aCircuitData, int aCircuitDataIndex); + + /** + * How the Integer should be displayed in the GUI. + * null means, that it just displays as regular Number. + */ + @SideOnly(Side.CLIENT) + public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex) { + return null; + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_Config.java b/src/main/java/gregtech/api/util/GT_Config.java index 3ba9603114..f4631f5de6 100644 --- a/src/main/java/gregtech/api/util/GT_Config.java +++ b/src/main/java/gregtech/api/util/GT_Config.java @@ -1,85 +1,87 @@ package gregtech.api.util; -import static gregtech.api.enums.GT_Values.E; import gregtech.api.GregTech_API; import net.minecraft.item.ItemStack; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; +import static gregtech.api.enums.GT_Values.E; + public class GT_Config implements Runnable { - public static boolean troll = false; - - public static Configuration sConfigFileIDs; - - public static int addIDConfig(Object aCategory, String aName, int aDefault) { - if (GT_Utility.isStringInvalid(aName)) return aDefault; - Property tProperty = sConfigFileIDs.get(aCategory.toString().replaceAll("\\|", "."), aName.replaceAll("\\|", "."), aDefault); - int rResult = tProperty.getInt(aDefault); - if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sConfigFileIDs.save(); - return rResult; - } - - public final Configuration mConfig; - - public GT_Config(Configuration aConfig) { - mConfig = aConfig; - mConfig.load(); - mConfig.save(); - GregTech_API.sAfterGTPreload.add(this); // in case of crash on startup - GregTech_API.sAfterGTLoad.add(this); // in case of crash on startup - GregTech_API.sAfterGTPostload.add(this); - } - - public static String getStackConfigName(ItemStack aStack) { - if (GT_Utility.isStackInvalid(aStack)) return E; - Object rName = GT_OreDictUnificator.getAssociation(aStack); - if (rName != null) return rName.toString(); - try {if (GT_Utility.isStringValid(rName = aStack.getUnlocalizedName())) return rName.toString();} catch (Throwable e) {/*Do nothing*/} - String sName = aStack.getItem().toString(); - String[] tmp = sName.split("@"); - if(tmp.length>0)sName=tmp[0]; - return sName + "." + aStack.getItemDamage(); - } - - public boolean get(Object aCategory, ItemStack aStack, boolean aDefault) { - String aName = getStackConfigName(aStack); - return get(aCategory, aName , aDefault); - } - - public boolean get(Object aCategory, String aName, boolean aDefault) { - if (GT_Utility.isStringInvalid(aName)) return aDefault; - Property tProperty = mConfig.get(aCategory.toString().replaceAll("\\|", "_"), (aName+"_"+aDefault).replaceAll("\\|", "_"), aDefault); - boolean rResult = tProperty.getBoolean(aDefault); - if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) mConfig.save(); - return rResult; - } - - public int get(Object aCategory, ItemStack aStack, int aDefault) { - return get(aCategory, getStackConfigName(aStack), aDefault); - } - - public int get(Object aCategory, String aName, int aDefault) { - if (GT_Utility.isStringInvalid(aName)) return aDefault; - Property tProperty = mConfig.get(aCategory.toString().replaceAll("\\|", "_"), (aName+"_"+aDefault).replaceAll("\\|", "_"), aDefault); - int rResult = tProperty.getInt(aDefault); - if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) mConfig.save(); - return rResult; - } - - public double get(Object aCategory, ItemStack aStack, double aDefault) { - return get(aCategory, getStackConfigName(aStack), aDefault); - } - - public double get(Object aCategory, String aName, double aDefault) { - if (GT_Utility.isStringInvalid(aName)) return aDefault; - Property tProperty = mConfig.get(aCategory.toString().replaceAll("\\|", "_"), (aName+"_"+aDefault).replaceAll("\\|", "_"), aDefault); - double rResult = tProperty.getDouble(aDefault); - if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) mConfig.save(); - return rResult; - } + public static boolean troll = false; + + public static Configuration sConfigFileIDs; + public final Configuration mConfig; + + public GT_Config(Configuration aConfig) { + mConfig = aConfig; + mConfig.load(); + mConfig.save(); + GregTech_API.sAfterGTPreload.add(this); // in case of crash on startup + GregTech_API.sAfterGTLoad.add(this); // in case of crash on startup + GregTech_API.sAfterGTPostload.add(this); + } + + public static int addIDConfig(Object aCategory, String aName, int aDefault) { + if (GT_Utility.isStringInvalid(aName)) return aDefault; + Property tProperty = sConfigFileIDs.get(aCategory.toString().replaceAll("\\|", "."), aName.replaceAll("\\|", "."), aDefault); + int rResult = tProperty.getInt(aDefault); + if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sConfigFileIDs.save(); + return rResult; + } + + public static String getStackConfigName(ItemStack aStack) { + if (GT_Utility.isStackInvalid(aStack)) return E; + Object rName = GT_OreDictUnificator.getAssociation(aStack); + if (rName != null) return rName.toString(); + try { + if (GT_Utility.isStringValid(rName = aStack.getUnlocalizedName())) return rName.toString(); + } catch (Throwable e) {/*Do nothing*/} + String sName = aStack.getItem().toString(); + String[] tmp = sName.split("@"); + if (tmp.length > 0) sName = tmp[0]; + return sName + "." + aStack.getItemDamage(); + } + + public boolean get(Object aCategory, ItemStack aStack, boolean aDefault) { + String aName = getStackConfigName(aStack); + return get(aCategory, aName, aDefault); + } + + public boolean get(Object aCategory, String aName, boolean aDefault) { + if (GT_Utility.isStringInvalid(aName)) return aDefault; + Property tProperty = mConfig.get(aCategory.toString().replaceAll("\\|", "_"), (aName + "_" + aDefault).replaceAll("\\|", "_"), aDefault); + boolean rResult = tProperty.getBoolean(aDefault); + if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) mConfig.save(); + return rResult; + } + + public int get(Object aCategory, ItemStack aStack, int aDefault) { + return get(aCategory, getStackConfigName(aStack), aDefault); + } + + public int get(Object aCategory, String aName, int aDefault) { + if (GT_Utility.isStringInvalid(aName)) return aDefault; + Property tProperty = mConfig.get(aCategory.toString().replaceAll("\\|", "_"), (aName + "_" + aDefault).replaceAll("\\|", "_"), aDefault); + int rResult = tProperty.getInt(aDefault); + if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) mConfig.save(); + return rResult; + } + + public double get(Object aCategory, ItemStack aStack, double aDefault) { + return get(aCategory, getStackConfigName(aStack), aDefault); + } + + public double get(Object aCategory, String aName, double aDefault) { + if (GT_Utility.isStringInvalid(aName)) return aDefault; + Property tProperty = mConfig.get(aCategory.toString().replaceAll("\\|", "_"), (aName + "_" + aDefault).replaceAll("\\|", "_"), aDefault); + double rResult = tProperty.getDouble(aDefault); + if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) mConfig.save(); + return rResult; + } - @Override - public void run() { - mConfig.save(); - } + @Override + public void run() { + mConfig.save(); + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java index cfc75f36b8..f3ba021ad1 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java @@ -1,217 +1,218 @@ package gregtech.api.util; -import static gregtech.api.enums.GT_Values.E; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.objects.GT_ItemStack; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; +import static gregtech.api.enums.GT_Values.E; + /** * For Covers with a special behavior. */ public abstract class GT_CoverBehavior { - /** - * Called by updateEntity inside the covered TileEntity. aCoverVariable is the Value you returned last time. - */ - public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { - return aCoverVariable; - } - - /** - * Called when someone rightclicks this Cover. - * - * return true, if something actually happens. - */ - public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { - return false; - } - - /** - * Called when someone rightclicks this Cover Client Side - * - * return true, if something actually happens. - */ - public boolean onCoverRightclickClient(byte aSide, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { - return false; - } - - /** - * Called when someone rightclicks this Cover with a Screwdriver. Doesn't call @onCoverRightclick in this Case. - * - * return the new Value of the Cover Variable - */ - public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { - return aCoverVariable; - } - - /** - * Checks if the Cover can be placed on this. - */ - public boolean isCoverPlaceable(byte aSide, GT_ItemStack aStack, ICoverable aTileEntity) { - return true; - } - - /** - * Removes the Cover if this returns true, or if aForced is true. - * Doesn't get called when the Machine Block is getting broken, only if you break the Cover away from the Machine. - */ - public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) { - return true; - } - - /** - * Gives a small Text for the status of the Cover. - */ - public String getDescription(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return E; - } - - /** - * How Blast Proof the Cover is. 30 is normal. - */ - public float getBlastProofLevel(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return 10.0F; - } - - /** - * If it lets RS-Signals into the Block - * - * This is just Informative so that Machines know if their Redstone Input is blocked or not - */ - public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets RS-Signals out of the Block - */ - public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Fibre-Signals into the Block - * - * This is just Informative so that Machines know if their Redstone Input is blocked or not - */ - public boolean letsFibreGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Fibre-Signals out of the Block - */ - public boolean letsFibreGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Energy into the Block - */ - public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Energy out of the Block - */ - public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Liquids into the Block, aFluid can be null meaning if this is generally allowing Fluids or not. - */ - public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Liquids out of the Block, aFluid can be null meaning if this is generally allowing Fluids or not. - */ - public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Items into the Block, aSlot = -1 means if it is generally accepting Items (return false for no Interaction at all), aSlot = -2 means if it would accept for all Slots (return true to skip the Checks for each Slot). - */ - public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets Items out of the Block, aSlot = -1 means if it is generally accepting Items (return false for no Interaction at all), aSlot = -2 means if it would accept for all Slots (return true to skip the Checks for each Slot). - */ - public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { - return false; - } - - /** - * If it lets you rightclick the Machine normally - */ - public boolean isGUIClickable(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * Needs to return true for Covers, which have a Redstone Output on their Facing. - */ - public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * if this Cover should let Pipe Connections look connected even if it is not the case. - */ - public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return false; - } - - /** - * Called to determine the incoming Redstone Signal of a Machine. - * Returns the original Redstone per default. - * The Cover should @letsRedstoneGoIn or the aInputRedstone Parameter is always 0. - */ - public byte getRedstoneInput(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return letsRedstoneGoIn(aSide, aCoverID, aCoverVariable, aTileEntity)?aInputRedstone:0; - } - - /** - * Gets the Tick Rate for doCoverThings of the Cover - * - * 0 = No Ticks! Yes, 0 is Default, you have to override this - */ - public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return 0; - } - - /** - * If this is a simple Cover, which can also be used on Bronze Machines and similar. - */ - public boolean isSimpleCover() { - return false; - } - - /** - * The MC Color of this Lens. -1 for no Color (meaning this isn't a Lens then). - */ - public byte getLensColor(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return -1; - } - - /** - * @return the ItemStack dropped by this Cover - */ - public ItemStack getDrop(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - return GT_OreDictUnificator.get(true, aTileEntity.getCoverItemAtSide(aSide)); - } - - /** - * @return sets the Cover upon placement. - */ - public void placeCover(byte aSide, ItemStack aCover, ICoverable aTileEntity) { - aTileEntity.setCoverIDAtSide(aSide, GT_Utility.stackToInt(aCover)); - } + /** + * Called by updateEntity inside the covered TileEntity. aCoverVariable is the Value you returned last time. + */ + public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) { + return aCoverVariable; + } + + /** + * Called when someone rightclicks this Cover. + *

+ * return true, if something actually happens. + */ + public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + return false; + } + + /** + * Called when someone rightclicks this Cover Client Side + *

+ * return true, if something actually happens. + */ + public boolean onCoverRightclickClient(byte aSide, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + return false; + } + + /** + * Called when someone rightclicks this Cover with a Screwdriver. Doesn't call @onCoverRightclick in this Case. + *

+ * return the new Value of the Cover Variable + */ + public int onCoverScrewdriverclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + return aCoverVariable; + } + + /** + * Checks if the Cover can be placed on this. + */ + public boolean isCoverPlaceable(byte aSide, GT_ItemStack aStack, ICoverable aTileEntity) { + return true; + } + + /** + * Removes the Cover if this returns true, or if aForced is true. + * Doesn't get called when the Machine Block is getting broken, only if you break the Cover away from the Machine. + */ + public boolean onCoverRemoval(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, boolean aForced) { + return true; + } + + /** + * Gives a small Text for the status of the Cover. + */ + public String getDescription(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return E; + } + + /** + * How Blast Proof the Cover is. 30 is normal. + */ + public float getBlastProofLevel(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return 10.0F; + } + + /** + * If it lets RS-Signals into the Block + *

+ * This is just Informative so that Machines know if their Redstone Input is blocked or not + */ + public boolean letsRedstoneGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets RS-Signals out of the Block + */ + public boolean letsRedstoneGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Fibre-Signals into the Block + *

+ * This is just Informative so that Machines know if their Redstone Input is blocked or not + */ + public boolean letsFibreGoIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Fibre-Signals out of the Block + */ + public boolean letsFibreGoOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Energy into the Block + */ + public boolean letsEnergyIn(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Energy out of the Block + */ + public boolean letsEnergyOut(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Liquids into the Block, aFluid can be null meaning if this is generally allowing Fluids or not. + */ + public boolean letsFluidIn(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Liquids out of the Block, aFluid can be null meaning if this is generally allowing Fluids or not. + */ + public boolean letsFluidOut(byte aSide, int aCoverID, int aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Items into the Block, aSlot = -1 means if it is generally accepting Items (return false for no Interaction at all), aSlot = -2 means if it would accept for all Slots (return true to skip the Checks for each Slot). + */ + public boolean letsItemsIn(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets Items out of the Block, aSlot = -1 means if it is generally accepting Items (return false for no Interaction at all), aSlot = -2 means if it would accept for all Slots (return true to skip the Checks for each Slot). + */ + public boolean letsItemsOut(byte aSide, int aCoverID, int aCoverVariable, int aSlot, ICoverable aTileEntity) { + return false; + } + + /** + * If it lets you rightclick the Machine normally + */ + public boolean isGUIClickable(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * Needs to return true for Covers, which have a Redstone Output on their Facing. + */ + public boolean manipulatesSidedRedstoneOutput(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * if this Cover should let Pipe Connections look connected even if it is not the case. + */ + public boolean alwaysLookConnected(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return false; + } + + /** + * Called to determine the incoming Redstone Signal of a Machine. + * Returns the original Redstone per default. + * The Cover should @letsRedstoneGoIn or the aInputRedstone Parameter is always 0. + */ + public byte getRedstoneInput(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return letsRedstoneGoIn(aSide, aCoverID, aCoverVariable, aTileEntity) ? aInputRedstone : 0; + } + + /** + * Gets the Tick Rate for doCoverThings of the Cover + *

+ * 0 = No Ticks! Yes, 0 is Default, you have to override this + */ + public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return 0; + } + + /** + * If this is a simple Cover, which can also be used on Bronze Machines and similar. + */ + public boolean isSimpleCover() { + return false; + } + + /** + * The MC Color of this Lens. -1 for no Color (meaning this isn't a Lens then). + */ + public byte getLensColor(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return -1; + } + + /** + * @return the ItemStack dropped by this Cover + */ + public ItemStack getDrop(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { + return GT_OreDictUnificator.get(true, aTileEntity.getCoverItemAtSide(aSide)); + } + + /** + * @return sets the Cover upon placement. + */ + public void placeCover(byte aSide, ItemStack aCover, ICoverable aTileEntity) { + aTileEntity.setCoverIDAtSide(aSide, GT_Utility.stackToInt(aCover)); + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_CreativeTab.java b/src/main/java/gregtech/api/util/GT_CreativeTab.java index d789fdc8a5..80dac95df2 100644 --- a/src/main/java/gregtech/api/util/GT_CreativeTab.java +++ b/src/main/java/gregtech/api/util/GT_CreativeTab.java @@ -7,18 +7,18 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class GT_CreativeTab extends CreativeTabs { - public GT_CreativeTab(String aName, String aLocalName) { - super("GregTech." + aName); - GT_LanguageManager.addStringLocalization("itemGroup.GregTech." + aName, aLocalName); - } - - @Override + public GT_CreativeTab(String aName, String aLocalName) { + super("GregTech." + aName); + GT_LanguageManager.addStringLocalization("itemGroup.GregTech." + aName, aLocalName); + } + + @Override public ItemStack getIconItemStack() { return ItemList.Tool_Cheat.get(1, new ItemStack(Blocks.iron_block, 1)); } - - @Override - public Item getTabIconItem() { - return ItemList.Circuit_Integrated.getItem(); - } + + @Override + public Item getTabIconItem() { + return ItemList.Circuit_Integrated.getItem(); + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_FoodStat.java b/src/main/java/gregtech/api/util/GT_FoodStat.java index 336aeeab9c..d0fe9bdbf4 100644 --- a/src/main/java/gregtech/api/util/GT_FoodStat.java +++ b/src/main/java/gregtech/api/util/GT_FoodStat.java @@ -10,92 +10,93 @@ import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; public class GT_FoodStat implements IFoodStat { - private final int mFoodLevel; - private final int[] mPotionEffects; - private final float mSaturation; - private final EnumAction mAction; - private final ItemStack mEmptyContainer; - private final boolean mAlwaysEdible, mInvisibleParticles, mIsRotten; - private boolean mExplosive = false, mMilk = false; - - /** - * @param aFoodLevel Amount of Food in Half Bacon [0 - 20] - * @param aSaturation Amount of Saturation [0.0F - 1.0F] - * @param aAction The Action to be used. If this is null, it uses the Eating Action - * @param aEmptyContainer An empty Container (Optional) - * @param aAlwaysEdible If this Item is always edible, like Golden Apples or Potions - * @param aInvisibleParticles If the Particles of the Potion Effects are invisible - * @param aPotionEffects An Array of Potion Effects with %4==0 Elements as follows - * ID of a Potion Effect. 0 for none - * Duration of the Potion in Ticks - * Level of the Effect. [0, 1, 2] are for [I, II, III] - * The likelihood that this Potion Effect takes place upon being eaten [1 - 100] - */ - public GT_FoodStat(int aFoodLevel, float aSaturation, EnumAction aAction, ItemStack aEmptyContainer, boolean aAlwaysEdible, boolean aInvisibleParticles, boolean aIsRotten, int... aPotionEffects) { - mFoodLevel = aFoodLevel; - mSaturation = aSaturation; - mAction = aAction==null?EnumAction.eat:aAction; - mPotionEffects = aPotionEffects; - mEmptyContainer = GT_Utility.copy(aEmptyContainer); - mInvisibleParticles = aInvisibleParticles; - mAlwaysEdible = aAlwaysEdible; - mIsRotten = aIsRotten; - } - - public GT_FoodStat setExplosive() { - mExplosive = true; - return this; - } - - public GT_FoodStat setMilk() { - mMilk = true; - return this; - } - - @Override - public int getFoodLevel(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { - return mFoodLevel; - } - - @Override - public float getSaturation(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { - return mSaturation; - } - - @Override - public void onEaten(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { + private final int mFoodLevel; + private final int[] mPotionEffects; + private final float mSaturation; + private final EnumAction mAction; + private final ItemStack mEmptyContainer; + private final boolean mAlwaysEdible, mInvisibleParticles, mIsRotten; + private boolean mExplosive = false, mMilk = false; + + /** + * @param aFoodLevel Amount of Food in Half Bacon [0 - 20] + * @param aSaturation Amount of Saturation [0.0F - 1.0F] + * @param aAction The Action to be used. If this is null, it uses the Eating Action + * @param aEmptyContainer An empty Container (Optional) + * @param aAlwaysEdible If this Item is always edible, like Golden Apples or Potions + * @param aInvisibleParticles If the Particles of the Potion Effects are invisible + * @param aPotionEffects An Array of Potion Effects with %4==0 Elements as follows + * ID of a Potion Effect. 0 for none + * Duration of the Potion in Ticks + * Level of the Effect. [0, 1, 2] are for [I, II, III] + * The likelihood that this Potion Effect takes place upon being eaten [1 - 100] + */ + public GT_FoodStat(int aFoodLevel, float aSaturation, EnumAction aAction, ItemStack aEmptyContainer, boolean aAlwaysEdible, boolean aInvisibleParticles, boolean aIsRotten, int... aPotionEffects) { + mFoodLevel = aFoodLevel; + mSaturation = aSaturation; + mAction = aAction == null ? EnumAction.eat : aAction; + mPotionEffects = aPotionEffects; + mEmptyContainer = GT_Utility.copy(aEmptyContainer); + mInvisibleParticles = aInvisibleParticles; + mAlwaysEdible = aAlwaysEdible; + mIsRotten = aIsRotten; + } + + public GT_FoodStat setExplosive() { + mExplosive = true; + return this; + } + + public GT_FoodStat setMilk() { + mMilk = true; + return this; + } + + @Override + public int getFoodLevel(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { + return mFoodLevel; + } + + @Override + public float getSaturation(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { + return mSaturation; + } + + @Override + public void onEaten(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { aStack.stackSize--; ItemStack tStack = GT_OreDictUnificator.get(GT_Utility.copy(mEmptyContainer)); - if (tStack != null && !aPlayer.inventory.addItemStackToInventory(tStack)) aPlayer.dropPlayerItemWithRandomChoice(tStack, true); - aPlayer.worldObj.playSoundAtEntity(aPlayer, "random.burp", 0.5F, aPlayer.worldObj.rand.nextFloat() * 0.1F + 0.9F); - if (!aPlayer.worldObj.isRemote) { - if (mMilk) { - aPlayer.curePotionEffects(new ItemStack(Items.milk_bucket, 1, 0)); - } - for (int i = 3; i < mPotionEffects.length; i+=4) { - if (aPlayer.worldObj.rand.nextInt(100) < mPotionEffects[i]) { - aPlayer.addPotionEffect(new PotionEffect(mPotionEffects[i-3], mPotionEffects[i-2], mPotionEffects[i-1], mInvisibleParticles)); - } - } - if (mExplosive) { - aPlayer.worldObj.newExplosion(aPlayer, aPlayer.posX, aPlayer.posY, aPlayer.posZ, 4, true, true); - aPlayer.attackEntityFrom(GT_DamageSources.getExplodingDamage(), Float.MAX_VALUE); - } - } - } - - @Override - public EnumAction getFoodAction(GT_MetaBase_Item aItem, ItemStack aStack) { - return mAction; - } - - @Override - public boolean alwaysEdible(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { - return mAlwaysEdible; - } - - @Override - public boolean isRotten(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { - return mIsRotten; - } + if (tStack != null && !aPlayer.inventory.addItemStackToInventory(tStack)) + aPlayer.dropPlayerItemWithRandomChoice(tStack, true); + aPlayer.worldObj.playSoundAtEntity(aPlayer, "random.burp", 0.5F, aPlayer.worldObj.rand.nextFloat() * 0.1F + 0.9F); + if (!aPlayer.worldObj.isRemote) { + if (mMilk) { + aPlayer.curePotionEffects(new ItemStack(Items.milk_bucket, 1, 0)); + } + for (int i = 3; i < mPotionEffects.length; i += 4) { + if (aPlayer.worldObj.rand.nextInt(100) < mPotionEffects[i]) { + aPlayer.addPotionEffect(new PotionEffect(mPotionEffects[i - 3], mPotionEffects[i - 2], mPotionEffects[i - 1], mInvisibleParticles)); + } + } + if (mExplosive) { + aPlayer.worldObj.newExplosion(aPlayer, aPlayer.posX, aPlayer.posY, aPlayer.posZ, 4, true, true); + aPlayer.attackEntityFrom(GT_DamageSources.getExplodingDamage(), Float.MAX_VALUE); + } + } + } + + @Override + public EnumAction getFoodAction(GT_MetaBase_Item aItem, ItemStack aStack) { + return mAction; + } + + @Override + public boolean alwaysEdible(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { + return mAlwaysEdible; + } + + @Override + public boolean isRotten(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer) { + return mIsRotten; + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_IBoxableWrapper.java b/src/main/java/gregtech/api/util/GT_IBoxableWrapper.java index 03ffc6755a..fd1d229284 100644 --- a/src/main/java/gregtech/api/util/GT_IBoxableWrapper.java +++ b/src/main/java/gregtech/api/util/GT_IBoxableWrapper.java @@ -4,8 +4,8 @@ import ic2.api.item.IBoxable; import net.minecraft.item.ItemStack; public class GT_IBoxableWrapper implements IBoxable { - @Override - public boolean canBeStoredInToolbox(ItemStack itemstack) { - return true; - } + @Override + public boolean canBeStoredInToolbox(ItemStack itemstack) { + return true; + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_ItsNotMyFaultException.java b/src/main/java/gregtech/api/util/GT_ItsNotMyFaultException.java index 0c15970429..c3b7d34eb4 100644 --- a/src/main/java/gregtech/api/util/GT_ItsNotMyFaultException.java +++ b/src/main/java/gregtech/api/util/GT_ItsNotMyFaultException.java @@ -1,16 +1,16 @@ package gregtech.api.util; public class GT_ItsNotMyFaultException extends RuntimeException { - private static final long serialVersionUID = -8752778866486460495L; - - private String mError; - - public GT_ItsNotMyFaultException(String aError) { - mError = aError; - } - - @Override - public String toString() { - return "The GregTech-Addon has a Problem.\nIT'S NOT MY FAULT!!! Below is how to fix it.\n" + mError + "\nDO NOT COME TO ME WITH THIS CRASH. YOU CAUSED IT YOURSELF, AND I TOLD YOU HOW TO FIX IT!!!"; - } + private static final long serialVersionUID = -8752778866486460495L; + + private String mError; + + public GT_ItsNotMyFaultException(String aError) { + mError = aError; + } + + @Override + public String toString() { + return "The GregTech-Addon has a Problem.\nIT'S NOT MY FAULT!!! Below is how to fix it.\n" + mError + "\nDO NOT COME TO ME WITH THIS CRASH. YOU CAUSED IT YOURSELF, AND I TOLD YOU HOW TO FIX IT!!!"; + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java index b419b7100f..a60189ea71 100644 --- a/src/main/java/gregtech/api/util/GT_LanguageManager.java +++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java @@ -1,95 +1,95 @@ package gregtech.api.util; -import static gregtech.api.enums.GT_Values.E; +import cpw.mods.fml.common.registry.LanguageRegistry; import gregtech.api.GregTech_API; - -import java.util.HashMap; -import java.util.Map.Entry; - import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; -import cpw.mods.fml.common.registry.LanguageRegistry; + +import java.util.HashMap; +import java.util.Map.Entry; + +import static gregtech.api.enums.GT_Values.E; public class GT_LanguageManager { - public static Configuration sEnglishFile; - public static final HashMap TEMPMAP = new HashMap(), BUFFERMAP = new HashMap(); - - public static String addStringLocalization(String aKey, String aEnglish) { - return addStringLocalization(aKey, aEnglish, true); - } - - public static String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) { - if (aKey == null) return E; - if (aWriteIntoLangFile) aEnglish = writeToLangFile(aKey, aEnglish); - TEMPMAP.put(aKey.trim(), aEnglish); - LanguageRegistry.instance().injectLanguage("en_US", TEMPMAP); - TEMPMAP.clear(); - return aEnglish; - } - - private static synchronized String writeToLangFile(String aKey, String aEnglish) { - if (aKey == null) return E; - if (sEnglishFile == null) { - BUFFERMAP.put(aKey.trim(), aEnglish); - } else { - if (!BUFFERMAP.isEmpty()) { - for (Entry tEntry : BUFFERMAP.entrySet()) { - Property tProperty = sEnglishFile.get("LanguageFile", tEntry.getKey(), tEntry.getValue()); - if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sEnglishFile.save(); - } - BUFFERMAP.clear(); - } - Property tProperty = sEnglishFile.get("LanguageFile", aKey.trim(), aEnglish); - if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sEnglishFile.save(); - if (sEnglishFile.get("EnableLangFile", "UseThisFileAsLanguageFile", false).getBoolean(false)) aEnglish = tProperty.getString(); - } - return aEnglish; - } - - public static String getTranslation(String aKey) { - if (aKey == null) return E; - String tTrimmedKey = aKey.trim(), rTranslation = LanguageRegistry.instance().getStringLocalization(tTrimmedKey); - if (GT_Utility.isStringInvalid(rTranslation)) { - rTranslation = StatCollector.translateToLocal(tTrimmedKey); - if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.equals(rTranslation)) { - if (aKey.endsWith(".name")) { - rTranslation = StatCollector.translateToLocal(tTrimmedKey.substring(0, tTrimmedKey.length() - 5)); - if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.substring(0, tTrimmedKey.length() - 5).equals(rTranslation)) { - return aKey; - } - } else { - rTranslation = StatCollector.translateToLocal(tTrimmedKey + ".name"); - if (GT_Utility.isStringInvalid(rTranslation) || (tTrimmedKey + ".name").equals(rTranslation)) { - return aKey; - } - } - } - } - return rTranslation; - } - - public static String getTranslation(String aKey, String aSeperator) { - if (aKey == null) return E; - String rTranslation = E; - for (String tString : aKey.split(aSeperator)) { - rTranslation += getTranslation(tString); - } - return rTranslation; - } - - public static String getTranslateableItemStackName(ItemStack aStack) { - if (GT_Utility.isStackInvalid(aStack)) return "null"; - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT != null && tNBT.hasKey("display")) { - String tName = tNBT.getCompoundTag("display").getString("Name"); - if (GT_Utility.isStringValid(tName)) { - return tName; - } - } - return aStack.getUnlocalizedName() + ".name"; - } + public static Configuration sEnglishFile; + + public static String addStringLocalization(String aKey, String aEnglish) { + return addStringLocalization(aKey, aEnglish, true); + } + + public static String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) { + if (aKey == null) return E; + if (aWriteIntoLangFile) aEnglish = writeToLangFile(aKey, aEnglish); + TEMPMAP.put(aKey.trim(), aEnglish); + LanguageRegistry.instance().injectLanguage("en_US", TEMPMAP); + TEMPMAP.clear(); + return aEnglish; + } + + private static synchronized String writeToLangFile(String aKey, String aEnglish) { + if (aKey == null) return E; + if (sEnglishFile == null) { + BUFFERMAP.put(aKey.trim(), aEnglish); + } else { + if (!BUFFERMAP.isEmpty()) { + for (Entry tEntry : BUFFERMAP.entrySet()) { + Property tProperty = sEnglishFile.get("LanguageFile", tEntry.getKey(), tEntry.getValue()); + if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sEnglishFile.save(); + } + BUFFERMAP.clear(); + } + Property tProperty = sEnglishFile.get("LanguageFile", aKey.trim(), aEnglish); + if (!tProperty.wasRead() && GregTech_API.sPostloadFinished) sEnglishFile.save(); + if (sEnglishFile.get("EnableLangFile", "UseThisFileAsLanguageFile", false).getBoolean(false)) + aEnglish = tProperty.getString(); + } + return aEnglish; + } + + public static String getTranslation(String aKey) { + if (aKey == null) return E; + String tTrimmedKey = aKey.trim(), rTranslation = LanguageRegistry.instance().getStringLocalization(tTrimmedKey); + if (GT_Utility.isStringInvalid(rTranslation)) { + rTranslation = StatCollector.translateToLocal(tTrimmedKey); + if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.equals(rTranslation)) { + if (aKey.endsWith(".name")) { + rTranslation = StatCollector.translateToLocal(tTrimmedKey.substring(0, tTrimmedKey.length() - 5)); + if (GT_Utility.isStringInvalid(rTranslation) || tTrimmedKey.substring(0, tTrimmedKey.length() - 5).equals(rTranslation)) { + return aKey; + } + } else { + rTranslation = StatCollector.translateToLocal(tTrimmedKey + ".name"); + if (GT_Utility.isStringInvalid(rTransla