aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/material/ELEMENT.java8
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java481
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java122
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java29
-rw-r--r--src/resources/assets/miscutils/lang/en_US.lang105
5 files changed, 449 insertions, 296 deletions
diff --git a/src/Java/gtPlusPlus/core/material/ELEMENT.java b/src/Java/gtPlusPlus/core/material/ELEMENT.java
index d1b7c01e0a..e972992391 100644
--- a/src/Java/gtPlusPlus/core/material/ELEMENT.java
+++ b/src/Java/gtPlusPlus/core/material/ELEMENT.java
@@ -216,11 +216,11 @@ public final class ELEMENT {
//Runescape materials
- public static final Material BLACK_METAL = new Material("Black", MaterialState.SOLID, TextureSet.SET_METALLIC, new short[] {5, 5, 5}, 2350, 4650, 24, 17, false, "҈", 0, new MaterialStack[]{new MaterialStack(getInstance().LEAD, 15), new MaterialStack(getInstance().TUNGSTEN, 25), new MaterialStack(getInstance().CARBON, 60)});//Not a GT Inherited Material
- public static final Material WHITE_METAL = new Material("White", MaterialState.SOLID, TextureSet.SET_METALLIC, new short[] {255, 255, 255}, 4560, 7580, 35, 41, false, "҉", 0, new MaterialStack[]{new MaterialStack(getInstance().COPPER, 5), new MaterialStack(getInstance().ANTIMONY, 10), new MaterialStack(getInstance().PLATINUM, 10), new MaterialStack(getInstance().TIN, 75)});//Not a GT Inherited Material
- public static final Material GRANITE = new Material("Ancient Granite", MaterialState.SOLID, TextureSet.SET_SAND, new short[] {107, 107, 107}, 500, 2000, 16, 12, false, "«»", 0);//Not a GT Inherited Material
+ public static final Material BLACK_METAL = new Material("Black Metal", MaterialState.SOLID, TextureSet.SET_METALLIC, new short[] {5, 5, 5}, 2350, 4650, 24, 17, false, "҈", 0, new MaterialStack[]{new MaterialStack(getInstance().LEAD, 15), new MaterialStack(getInstance().TUNGSTEN, 25), new MaterialStack(getInstance().CARBON, 60)});//Not a GT Inherited Material
+ public static final Material WHITE_METAL = new Material("White Metal", MaterialState.SOLID, TextureSet.SET_METALLIC, new short[] {255, 255, 255}, 4560, 7580, 35, 41, false, "҉", 0, new MaterialStack[]{new MaterialStack(getInstance().COPPER, 5), new MaterialStack(getInstance().ANTIMONY, 10), new MaterialStack(getInstance().PLATINUM, 10), new MaterialStack(getInstance().TIN, 75)});//Not a GT Inherited Material
+ public static final Material GRANITE = new Material("Ancient Granite", MaterialState.SOLID, TextureSet.SET_SAND, new short[] {107, 107, 107}, 500, 2000, 16, 12, false, "«»", 0, false);//Not a GT Inherited Material
public static final Material RUNITE = new Material("Runite", MaterialState.SOLID, TextureSet.SET_FINE, new short[] {60, 200, 190}, 6750, 11550, 73, 87, true, "§", 0);//Not a GT Inherited Material
- public static final Material DRAGON_METAL = new Material("Dragon", MaterialState.SOLID, TextureSet.SET_SHINY, new short[] {220, 40, 20, 2}, 10160, 17850, 96, 105, true, "۞", 0);//Not a GT Inherited Material
+ public static final Material DRAGON_METAL = new Material("Dragonblood", MaterialState.SOLID, TextureSet.SET_SHINY, new short[] {220, 40, 20, 2}, 10160, 17850, 96, 105, true, "۞", 0);//Not a GT Inherited Material
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index 11eaf05535..516f78038d 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -273,7 +273,7 @@ GT_MetaTileEntity_MultiBlockBase {
public final static String TAG_HIDE_HATCHES = "TAG_HIDE_HATCHES";
public final static String TAG_HIDE_POLLUTION = "TAG_HIDE_POLLUTION";
public final static String TAG_HIDE_MACHINE_TYPE = "TAG_HIDE_MACHINE_TYPE";
-
+
@Override
public final String[] getDescription() {
/*if (aCachedToolTip != null) {
@@ -291,13 +291,13 @@ GT_MetaTileEntity_MultiBlockBase {
aCachedToolTip = null;
}
}*/
-
+
String aRequiresMuffler = "1x Muffler Hatch";
String aRequiresCoreModule = "1x Core Module";
String aRequiresMaint = "1x Maintanence Hatch";
-
+
String[] x = getTooltip();
-
+
//Filter List, toggle switches, rebuild map without flags
boolean showHatches = true;
boolean showMachineType = true;
@@ -323,8 +323,8 @@ GT_MetaTileEntity_MultiBlockBase {
for (int ee = 0; ee < x.length; ee++) {
x[ee] = aTempMap.get(ee);
}
-
-
+
+
//Assemble ordered map for misc tooltips
AutoMap<String> aOrderedMap = new AutoMap<String>();
if (showHatches) {
@@ -338,15 +338,15 @@ GT_MetaTileEntity_MultiBlockBase {
if (showMachineType) {
aOrderedMap.put(getMachineTooltip());
}
-
+
if (showPollution) {
aOrderedMap.put(getPollutionTooltip());
}
-
-
-
-
-
+
+
+
+
+
//Add Stock Tooltip to bottom of list
String[] z;
z = new String[aOrderedMap.size()];
@@ -476,62 +476,6 @@ GT_MetaTileEntity_MultiBlockBase {
}
return true;
}
-
- private int boostOutput(int aAmount) {
- if (aAmount <= 0) {
- return 10000;
- }
- if (aAmount <= 250) {
- aAmount += MathUtils.randInt(Math.max(aAmount/2, 1), aAmount*2);
- }
- else if (aAmount <= 500) {
- aAmount += MathUtils.randInt(Math.max(aAmount/2, 1), aAmount*2);
- }
- else if (aAmount <= 750) {
- aAmount += MathUtils.randInt(Math.max(aAmount/2, 1), aAmount*2);
- }
- else if (aAmount <= 1000) {
- aAmount = (aAmount*2);
- }
- else if (aAmount <= 1500) {
- aAmount = (aAmount*2);
- }
- else if (aAmount <= 2000) {
- aAmount = (int) (aAmount*1.5);
- }
- else if (aAmount <= 3000) {
- aAmount = (int) (aAmount*1.5);
- }
- else if (aAmount <= 4000) {
- aAmount = (int) (aAmount*1.2);
- }
- else if (aAmount <= 5000) {
- aAmount = (int) (aAmount*1.2);
- }
- else if (aAmount <= 7000) {
- aAmount = (int) (aAmount*1.2);
- }
- else if (aAmount <= 9000) {
- aAmount = (int) (aAmount*1.1);
- }
- return Math.min(10000, aAmount);
- }
-
- public GT_Recipe generateAdditionalOutputForRecipe(GT_Recipe aRecipe) {
- AutoMap<Integer> aNewChances = new AutoMap<Integer>();
- for (int chance : aRecipe.mChances) {
- aNewChances.put(boostOutput(chance));
- }
- GT_Recipe aClone = aRecipe.copy();
- int[] aTemp = new int[aNewChances.size()];
- int slot = 0;
- for (int g : aNewChances) {
- aTemp[slot] = g;
- slot++;
- }
- aClone.mChances = aTemp;
- return aClone;
- }
/**
* A Static {@link Method} object which holds the current status of logging.
@@ -539,23 +483,16 @@ GT_MetaTileEntity_MultiBlockBase {
public static Method aLogger = null;
public void log(String s) {
+
boolean isDebugLogging = CORE.DEBUG;
boolean reset = true;
-
- if (!isDebugLogging) {
- return;
- }
-
+
if (aLogger == null || reset) {
if (isDebugLogging) {
- try {
- aLogger = Logger.class.getMethod("INFO", String.class);
- } catch (NoSuchMethodException | SecurityException e) {}
+ aLogger = ReflectionUtils.getMethod(Logger.class, "INFO", String.class);
}
else {
- try {
- aLogger = Logger.class.getMethod("MACHINE_INFO", String.class);
- } catch (NoSuchMethodException | SecurityException e) {}
+ aLogger = ReflectionUtils.getMethod(Logger.class, "MACHINE_INFO", String.class);
}
}
try {
@@ -606,38 +543,195 @@ GT_MetaTileEntity_MultiBlockBase {
ItemStack[] aItemInputs, FluidStack[] aFluidInputs,
int aMaxParallelRecipes, int aEUPercent,
int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe) {
+ // Based on the Processing Array. A bit overkill, but very flexible.
+
+
+ if (this.doesMachineBoostOutput()) {
+ log("Boosting.");
+ return checkRecipeBoostedOutputs(aItemInputs, aFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, aRecipe);
+ }
+
+ //Control Core to control the Multiblocks behaviour.
+ int aControlCoreTier = getControlCoreTier();
+
+ //If no core, return false;
+ if (aControlCoreTier > 0) {
+ log("Control core found.");
+ }
+
+
+ // Reset outputs and progress stats
+ this.mEUt = 0;
+ this.mMaxProgresstime = 0;
+ this.mOutputItems = new ItemStack[]{};
+ this.mOutputFluids = new FluidStack[]{};
+
long tVoltage = getMaxInputVoltage();
byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
+ log("Running checkRecipeGeneric(0)");
+
+ //Check to see if Voltage Tier > Control Core Tier
+ if (tTier > aControlCoreTier) {
+ log("Control core found is lower tier than power tier. OK");
+ tTier = (byte) aControlCoreTier;
+ }
+
GT_Recipe tRecipe = aRecipe != null ? aRecipe : findRecipe(
getBaseMetaTileEntity(), mLastRecipe, false,
gregtech.api.enums.GT_Values.V[tTier], aFluidInputs, aItemInputs);
+ log("Running checkRecipeGeneric(1)");
+ // Remember last recipe - an optimization for findRecipe()
+ this.mLastRecipe = tRecipe;
+
if (tRecipe == null) {
log("BAD RETURN - 1");
return false;
}
-
- //Boost output if machine implements this strategy
- if (doesMachineBoostOutput()) {
- return checkRecipeBoostedOutputs(aItemInputs, aFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, tRecipe);
- }
- else {
- return checkRecipeGeneric(tRecipe, aSpeedBonusPercent, aOutputChanceRoll);
+
+ if (!this.canBufferOutputs(tRecipe, aMaxParallelRecipes)) {
+ log("BAD RETURN - 2");
+ return false;
}
-
+
+ // EU discount
+ float tRecipeEUt = (tRecipe.mEUt * aEUPercent) / 100.0f;
+ float tTotalEUt = 0.0f;
+
+ int parallelRecipes = 0;
+
+ log("parallelRecipes: "+parallelRecipes);
+ log("aMaxParallelRecipes: "+aMaxParallelRecipes);
+ log("tTotalEUt: "+tTotalEUt);
+ log("tVoltage: "+tVoltage);
+ log("tRecipeEUt: "+tRecipeEUt);
+ // Count recipes to do in parallel, consuming input items and fluids and considering input voltage limits
+ for (; parallelRecipes < aMaxParallelRecipes && tTotalEUt < (tVoltage - tRecipeEUt); parallelRecipes++) {
+ if (!tRecipe.isRecipeInputEqual(true, aFluidInputs, aItemInputs)) {
+ log("Broke at "+parallelRecipes+".");
+ break;
+ }
+ log("Bumped EU from "+tTotalEUt+" to "+(tTotalEUt+tRecipeEUt)+".");
+ tTotalEUt += tRecipeEUt;
+ }
+
+ if (parallelRecipes == 0) {
+ log("BAD RETURN - 3");
+ return false;
+ }
+
+ // -- Try not to fail after this point - inputs have already been consumed! --
+
+
+ // Convert speed bonus to duration multiplier
+ // e.g. 100% speed bonus = 200% speed = 100%/200% = 50% recipe duration.
+ aSpeedBonusPercent = Math.max(-99, aSpeedBonusPercent);
+ float tTimeFactor = 100.0f / (100.0f + aSpeedBonusPercent);
+ this.mMaxProgresstime = (int)(tRecipe.mDuration * tTimeFactor);
+
+ this.mEUt = (int)Math.ceil(tTotalEUt);
+
+ this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
+ this.mEfficiencyIncrease = 10000;
+
+ // Overclock
+ if (this.mEUt <= 16) {
+ this.mEUt = (this.mEUt * (1 << tTier - 1) * (1 << tTier - 1));
+ this.mMaxProgresstime = (this.mMaxProgresstime / (1 << tTier - 1));
+ } else {
+ while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
+ this.mEUt *= 4;
+ this.mMaxProgresstime /= 2;
+ }
+ }
+
+ if (this.mEUt > 0) {
+ this.mEUt = (-this.mEUt);
+ }
+
+ this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
+
+ // Collect fluid outputs
+ FluidStack[] tOutputFluids = new FluidStack[tRecipe.mFluidOutputs.length];
+ for (int h = 0; h < tRecipe.mFluidOutputs.length; h++) {
+ if (tRecipe.getFluidOutput(h) != null) {
+ tOutputFluids[h] = tRecipe.getFluidOutput(h).copy();
+ tOutputFluids[h].amount *= parallelRecipes;
+ }
+ }
+
+ // Collect output item types
+ ItemStack[] tOutputItems = new ItemStack[tRecipe.mOutputs.length];
+ for (int h = 0; h < tRecipe.mOutputs.length; h++) {
+ if (tRecipe.getOutput(h) != null) {
+ tOutputItems[h] = tRecipe.getOutput(h).copy();
+ tOutputItems[h].stackSize = 0;
+ }
+ }
+
+ // Set output item stack sizes (taking output chance into account)
+ for (int f = 0; f < tOutputItems.length; f++) {
+ if (tRecipe.mOutputs[f] != null && tOutputItems[f] != null) {
+ for (int g = 0; g < parallelRecipes; g++) {
+ if (getBaseMetaTileEntity().getRandomNumber(aOutputChanceRoll) < tRecipe.getOutputChance(f))
+ tOutputItems[f].stackSize += tRecipe.mOutputs[f].stackSize;
+ }
+ }
+ }
+
+ tOutputItems = removeNulls(tOutputItems);
+
+ // Sanitize item stack size, splitting any stacks greater than max stack size
+ List<ItemStack> splitStacks = new ArrayList<ItemStack>();
+ for (ItemStack tItem : tOutputItems) {
+ while (tItem.getMaxStackSize() < tItem.stackSize) {
+ ItemStack tmp = tItem.copy();
+ tmp.stackSize = tmp.getMaxStackSize();
+ tItem.stackSize = tItem.stackSize - tItem.getMaxStackSize();
+ splitStacks.add(tmp);
+ }
+ }
+
+ if (splitStacks.size() > 0) {
+ ItemStack[] tmp = new ItemStack[splitStacks.size()];
+ tmp = splitStacks.toArray(tmp);
+ tOutputItems = ArrayUtils.addAll(tOutputItems, tmp);
+ }
+
+ // Strip empty stacks
+ List<ItemStack> tSList = new ArrayList<ItemStack>();
+ for (ItemStack tS : tOutputItems) {
+ if (tS.stackSize > 0) tSList.add(tS);
+ }
+ tOutputItems = tSList.toArray(new ItemStack[tSList.size()]);
+
+ // Commit outputs
+ this.mOutputItems = tOutputItems;
+ this.mOutputFluids = tOutputFluids;
+ updateSlots();
+
+ // Play sounds (GT++ addition - GT multiblocks play no sounds)
+ startProcess();
+
+ log("GOOD RETURN - 1");
+ return true;
}
-
+
+
+
+
+
/*
* Here we handle recipe boosting, which grants additional output %'s to recipes that do not have 100%.
*/
-
+
private boolean mHasBoostedCurrentRecipe = false;
private GT_Recipe mBoostedRecipe = null;
private ItemStack[] mInputVerificationForBoosting = null;
-
+
/**
* Does this machine boost it's output?
* @return - if true, gives additional % to output chances.
@@ -646,6 +740,65 @@ GT_MetaTileEntity_MultiBlockBase {
return false;
}
+
+
+ private int boostOutput(int aAmount) {
+ if (aAmount <= 0) {
+ return 10000;
+ }
+ if (aAmount <= 250) {
+ aAmount += MathUtils.randInt(Math.max(aAmount/2, 1), aAmount*2);
+ }
+ else if (aAmount <= 500) {
+ aAmount += MathUtils.randInt(Math.max(aAmount/2, 1), aAmount*2);
+ }
+ else if (aAmount <= 750) {
+ aAmount += MathUtils.randInt(Math.max(aAmount/2, 1), aAmount*2);
+ }
+ else if (aAmount <= 1000) {
+ aAmount = (aAmount*2);
+ }
+ else if (aAmount <= 1500) {
+ aAmount = (aAmount*2);
+ }
+ else if (aAmount <= 2000) {
+ aAmount = (int) (aAmount*1.5);
+ }
+ else if (aAmount <= 3000) {
+ aAmount = (int) (aAmount*1.5);
+ }
+ else if (aAmount <= 4000) {
+ aAmount = (int) (aAmount*1.2);
+ }
+ else if (aAmount <= 5000) {
+ aAmount = (int) (aAmount*1.2);
+ }
+ else if (aAmount <= 7000) {
+ aAmount = (int) (aAmount*1.2);
+ }
+ else if (aAmount <= 9000) {
+ aAmount = (int) (aAmount*1.1);
+ }
+ return Math.min(10000, aAmount);
+ }
+
+ public GT_Recipe generateAdditionalOutputForRecipe(GT_Recipe aRecipe) {
+ AutoMap<Integer> aNewChances = new AutoMap<Integer>();
+ for (int chance : aRecipe.mChances) {
+ aNewChances.put(boostOutput(chance));
+ }
+ GT_Recipe aClone = aRecipe.copy();
+ int[] aTemp = new int[aNewChances.size()];
+ int slot = 0;
+ for (int g : aNewChances) {
+ aTemp[slot] = g;
+ slot++;
+ }
+ aClone.mChances = aTemp;
+ return aClone;
+ }
+
+
/**
* Processes recipes but provides a bonus to the output % of items if they are < 100%.
*
@@ -744,67 +897,6 @@ GT_MetaTileEntity_MultiBlockBase {
log("BAD RETURN - 1");
return false;
}
-
- // -- Try not to fail after this point - inputs have already been consumed! --
- return checkRecipeGeneric(tRecipe, aSpeedBonusPercent, aOutputChanceRoll);
- }
-
-
- /**
- * Directly processes a recipe from a non-generic recipe handler
- * @param aRecipe - A pre-modified GT_Recipe
- * @return - Did we process?
- */
- public boolean checkRecipeGeneric(GT_Recipe tRecipe, int rSpeedBonus, int aMaxOutputChance) {
- // Based on the Processing Array. A bit overkill, but very flexible.
-
- if (tRecipe == null) {
- return false;
- }
-
-
- ItemStack[] aItemInputs = tRecipe.mInputs;
- FluidStack[] aFluidInputs = tRecipe.mFluidInputs;
- int aMaxParallelRecipes = getMaxParallelRecipes();
- int aEUPercent = this.getEuDiscountForParallelism();
- int aSpeedBonusPercent = rSpeedBonus;
- int aOutputChanceRoll = aMaxOutputChance;
-
-
-
- //Control Core to control the Multiblocks behaviour.
- int aControlCoreTier = getControlCoreTier();
-
- //If no core, return false;
- if (aControlCoreTier == 0 && requireControlCores) {
- log("No control core found.");
- return false;
- }
-
- // Reset outputs and progress stats
- this.mEUt = 0;
- this.mMaxProgresstime = 0;
- this.mOutputItems = new ItemStack[]{};
- this.mOutputFluids = new FluidStack[]{};
-
- long tVoltage = getMaxInputVoltage();
- byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
- log("Running checkRecipeGeneric(0)");
-
- //Check to see if Voltage Tier > Control Core Tier
- if (tTier > aControlCoreTier && requireControlCores) {
- log("Control core found is lower tier than power tier.");
- return false;
- }
-
- log("Running checkRecipeGeneric(1)");
- // Remember last recipe - an optimization for findRecipe()
- this.mLastRecipe = tRecipe;
-
- if (tRecipe == null) {
- log("BAD RETURN - 1");
- return false;
- }
if (!this.canBufferOutputs(tRecipe, aMaxParallelRecipes)) {
log("BAD RETURN - 2");
@@ -851,11 +943,6 @@ GT_MetaTileEntity_MultiBlockBase {
this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
this.mEfficiencyIncrease = 10000;
-
- //Only Overclock as high as the control circuit.
- byte tTierOld = tTier;
- tTier = getControlCoreTier() > 0 ? (byte) aControlCoreTier : tTierOld;
-
// Overclock
if (this.mEUt <= 16) {
this.mEUt = (this.mEUt * (1 << tTier - 1) * (1 << tTier - 1));
@@ -939,40 +1026,30 @@ GT_MetaTileEntity_MultiBlockBase {
return true;
}
- public GT_Recipe reduceRecipeTimeByPercentage(final GT_Recipe tRecipe,
- final float percentage) {
- int cloneTime = 0;
- GT_Recipe baseRecipe;
- GT_Recipe cloneRecipe = null;
- baseRecipe = tRecipe.copy();
- if ((baseRecipe != null) && ((cloneRecipe != baseRecipe) || (cloneRecipe == null))) {
- cloneRecipe = baseRecipe.copy();
- log("Setting Recipe");
- }
- if ((baseRecipe != null) && ((cloneTime != baseRecipe.mDuration) || (cloneTime == 0))) {
- cloneTime = baseRecipe.mDuration;
- log("Setting Time");
- }
- if ((cloneRecipe != null) && cloneRecipe.mDuration > 0) {
- final int originalTime = cloneRecipe.mDuration;
- final int tempTime = MathUtils.findPercentageOfInt(cloneRecipe.mDuration,
- (100 - percentage));
- cloneRecipe.mDuration = tempTime;
- if (cloneRecipe.mDuration < originalTime) {
- log("Generated recipe with a smaller time. | "
- + originalTime + " | " + cloneRecipe.mDuration + " |");
- return cloneRecipe;
- } else {
- log("Did not generate recipe with a smaller time. | "
- + originalTime + " | " + cloneRecipe.mDuration + " |");
- return tRecipe;
- }
- }
- log("Error generating recipe, returning null.");
- return null;
- }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
public boolean isMachineRunning() {
boolean aRunning = this.getBaseMetaTileEntity().isActive();
@@ -1166,13 +1243,13 @@ GT_MetaTileEntity_MultiBlockBase {
}
public int getControlCoreTier() {
-
+
//Always return best tier if config is off.
/*boolean aCoresConfig = gtPlusPlus.core.lib.CORE.ConfigSwitches.requireControlCores;
if (!aCoresConfig) {
return 10;
}*/
-
+
if (mControlCoreBus.isEmpty()) {
log("No Control Core Modules Found.");
return 0;
@@ -1212,9 +1289,9 @@ GT_MetaTileEntity_MultiBlockBase {
log("Tried to add a secondary control core module.");
return false;
}
-
+
GT_MetaTileEntity_Hatch_ControlCore Module = (GT_MetaTileEntity_Hatch_ControlCore) aMetaTileEntity;
-
+
if (Module != null) {
if (Module.setOwner(aTileEntity)) {
log("Adding control core module.");
@@ -1503,12 +1580,12 @@ GT_MetaTileEntity_MultiBlockBase {
@SuppressWarnings("rawtypes")
public boolean isThisHatchMultiDynamo(Object aMetaTileEntity){
Class mDynamoClass;
- mDynamoClass = ReflectionUtils.getClass("com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti");
- if (mDynamoClass != null){
- if (mDynamoClass.isInstance(aMetaTileEntity)){
- return true;
- }
+ mDynamoClass = ReflectionUtils.getClass("com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti");
+ if (mDynamoClass != null){
+ if (mDynamoClass.isInstance(aMetaTileEntity)){
+ return true;
}
+ }
return false;
}
@@ -1540,7 +1617,7 @@ GT_MetaTileEntity_MultiBlockBase {
return "";
}
}
-
+
private static Method calculatePollutionReduction;
public int calculatePollutionReductionForHatch(GT_MetaTileEntity_Hatch_Muffler i , int g) {
if (calculatePollutionReduction == null) {
@@ -1794,17 +1871,17 @@ GT_MetaTileEntity_MultiBlockBase {
}
public abstract boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack);
-
-
+
+
public boolean isValidBlockForStructure(IGregTechTileEntity aBaseMetaTileEntity, int aCasingID, boolean canBeHatch,
Block aFoundBlock, int aFoundMeta, Block aExpectedBlock, int aExpectedMeta) {
boolean isHatch = false;
if (aBaseMetaTileEntity != null) {
-
+
if (aCasingID < 64) {
aCasingID = TAE.GTPP_INDEX(aCasingID);
}
-
+
isHatch = this.addToMachineList(aBaseMetaTileEntity, aCasingID);
if (isHatch) {
return true;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java
index cf6e484ff5..4fde2d6916 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java
@@ -1,16 +1,14 @@
package gtPlusPlus.xmod.gregtech.common.blocks.textures;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.IIcon;
-import net.minecraft.world.IBlockAccess;
-
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-
import gtPlusPlus.xmod.gregtech.common.blocks.GregtechMetaCasingBlocks;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock.CustomIcon;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.GregtechMetaTileEntity_IndustrialCentrifuge;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
public class TexturesCentrifugeMultiblock {
@@ -92,103 +90,55 @@ public class TexturesCentrifugeMultiblock {
TileEntity tTileEntity;
IMetaTileEntity tMetaTileEntity;
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide == 3 ? 1 : -1), yCoord - 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[0].getIcon();
- }
- return this.CENTRIFUGE[0].getIcon();
+ return getIconByIndex(tMetaTileEntity, 0);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide == 3 ? 1 : -1), yCoord, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[3].getIcon();
- }
- return this.CENTRIFUGE[3].getIcon();
+ return getIconByIndex(tMetaTileEntity, 3);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide == 3 ? 1 : -1), yCoord + 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[6].getIcon();
- }
- return this.CENTRIFUGE[6].getIcon();
+ return getIconByIndex(tMetaTileEntity, 6);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[1].getIcon();
- }
- return this.CENTRIFUGE[1].getIcon();
+ return getIconByIndex(tMetaTileEntity, 1);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[7].getIcon();
- }
- return this.CENTRIFUGE[7].getIcon();
+ return getIconByIndex(tMetaTileEntity, 7);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide == 2 ? 1 : -1), yCoord + 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[8].getIcon();
- }
- return this.CENTRIFUGE[8].getIcon();
+ return getIconByIndex(tMetaTileEntity, 8);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide == 2 ? 1 : -1), yCoord, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[5].getIcon();
- }
- return this.CENTRIFUGE[5].getIcon();
+ return getIconByIndex(tMetaTileEntity, 5);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide == 2 ? 1 : -1), yCoord - 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[2].getIcon();
- }
- return this.CENTRIFUGE[2].getIcon();
+ return getIconByIndex(tMetaTileEntity, 2);
}
} else if ((aSide == 4) || (aSide == 5)) {
TileEntity tTileEntity;
Object tMetaTileEntity;
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord + (aSide == 4 ? 1 : -1)))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[0].getIcon();
- }
- return this.CENTRIFUGE[0].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 0);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord, zCoord + (aSide == 4 ? 1 : -1)))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[3].getIcon();
- }
- return this.CENTRIFUGE[3].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 3);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord + (aSide == 4 ? 1 : -1)))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[6].getIcon();
- }
- return this.CENTRIFUGE[6].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 6);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[1].getIcon();
- }
- return this.CENTRIFUGE[1].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 1);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[7].getIcon();
- }
- return this.CENTRIFUGE[7].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 7);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord + (aSide == 5 ? 1 : -1)))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[8].getIcon();
- }
- return this.CENTRIFUGE[8].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 8);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord, zCoord + (aSide == 5 ? 1 : -1)))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[5].getIcon();
- }
- return this.CENTRIFUGE[5].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 5);
}
if ((null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord + (aSide == 5 ? 1 : -1)))) && ((tTileEntity instanceof IGregTechTileEntity)) && (((IGregTechTileEntity) tTileEntity).getFrontFacing() == aSide) && (null != (tMetaTileEntity = ((IGregTechTileEntity) tTileEntity).getMetaTileEntity())) && ((tMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge))) {
- if (isUsingAnimatedTexture(tTileEntity)) {
- return this.CENTRIFUGE_ACTIVE[2].getIcon();
- }
- return this.CENTRIFUGE[2].getIcon();
+ return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 2);
}
}
return TexturesGtBlock.Casing_Material_Centrifuge.getIcon();
@@ -440,15 +390,33 @@ public class TexturesCentrifugeMultiblock {
return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
}
- public boolean isUsingAnimatedTexture(TileEntity tTileEntity) {
- IGregTechTileEntity aTile;
- if (tTileEntity instanceof IGregTechTileEntity) {
- aTile = (IGregTechTileEntity) tTileEntity;
- if (aTile instanceof GregtechMetaTileEntity_IndustrialCentrifuge) {
- return ((GregtechMetaTileEntity_IndustrialCentrifuge) aTile).usingAnimations();
- }
- }
+ public boolean isCentrifugeRunning(IMetaTileEntity aTile) {
+ if (aTile == null) {
+ return false;
+ }
+ else {
+ return aTile.getBaseMetaTileEntity().isActive();
+ }
+
+
+ }
+
+ public boolean isUsingAnimatedTexture(IMetaTileEntity aMetaTileEntity) {
+ if (aMetaTileEntity != null) {
+ if (aMetaTileEntity instanceof GregtechMetaTileEntity_IndustrialCentrifuge) {
+ return ((GregtechMetaTileEntity_IndustrialCentrifuge) aMetaTileEntity).usingAnimations();
+ }
+ }
return false;
}
+ public IIcon getIconByIndex(IMetaTileEntity aMetaTileEntity, int aIndex) {
+ if (isUsingAnimatedTexture(aMetaTileEntity)) {
+ if (isCentrifugeRunning(aMetaTileEntity)) {
+ return this.CENTRIFUGE_ACTIVE[aIndex].getIcon();
+ }
+ }
+ return this.CENTRIFUGE[aIndex].getIcon();
+ }
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java
index e3c05a8388..3f3a276f0c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java
@@ -1,13 +1,10 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
-import gregtech.api.GregTech_API;
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
@@ -27,7 +24,7 @@ import net.minecraftforge.common.util.ForgeDirection;
public class GregtechMetaTileEntity_IndustrialCentrifuge
extends GregtechMeta_MultiBlockBase {
- private boolean mIsAnimated = true;
+ private boolean mIsAnimated;
private static ITexture frontFace;
private static ITexture frontFaceActive;
private static CustomIcon GT9_5_Active = new CustomIcon("iconsets/LARGECENTRIFUGE_ACTIVE5");
@@ -38,10 +35,12 @@ extends GregtechMeta_MultiBlockBase {
super(aID, aName, aNameRegional);
frontFaceActive = new GT_RenderedTexture(GT9_5_Active);
frontFace = new GT_RenderedTexture(GT9_5);
+ mIsAnimated = true;
}
public GregtechMetaTileEntity_IndustrialCentrifuge(final String aName) {
super(aName);
+ mIsAnimated = true;
}
@Override
@@ -59,6 +58,7 @@ extends GregtechMeta_MultiBlockBase {
return new String[]{
"Controller Block for the Industrial Centrifuge",
"125% faster than using single block machines of the same voltage",
+ "Disable animations with a screwdriver",
"Only uses 90% of the eu/t normally required",
"Processes six items per voltage tier",
"Size: 3x3x3 (Hollow)",
@@ -179,13 +179,14 @@ extends GregtechMeta_MultiBlockBase {
@Override
public void onModeChangeByScrewdriver(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- this.mIsAnimated = Utils.invertBoolean(mIsAnimated);
+ this.mIsAnimated = !mIsAnimated;
+ Logger.INFO("Is Centrifuge animated "+this.mIsAnimated);
if (this.mIsAnimated) {
- PlayerUtils.messagePlayer(aPlayer, "Using Animated Turbine Texture.");
+ PlayerUtils.messagePlayer(aPlayer, "Using Animated Turbine Texture. ");
}
else {
- PlayerUtils.messagePlayer(aPlayer, "Using Static Turbine Texture.");
- }
+ PlayerUtils.messagePlayer(aPlayer, "Using Static Turbine Texture. ");
+ }
}
@Override
@@ -196,12 +197,18 @@ extends GregtechMeta_MultiBlockBase {
@Override
public void loadNBTData(NBTTagCompound aNBT) {
- super.loadNBTData(aNBT);
- mIsAnimated = aNBT.getBoolean("mIsAnimated");
+ super.loadNBTData(aNBT);
+ if (aNBT.hasKey("mIsAnimated")) {
+ mIsAnimated = aNBT.getBoolean("mIsAnimated");
+ }
+ else {
+ mIsAnimated = true;
+ }
}
public boolean usingAnimations() {
- return mIsAnimated;
+ //Logger.INFO("Is animated? "+this.mIsAnimated);
+ return this.mIsAnimated;
}
private ITexture getFrontFacingTurbineTexture(boolean isActive) {
diff --git a/src/resources/assets/miscutils/lang/en_US.lang b/src/resources/assets/miscutils/lang/en_US.lang
index e1102d708e..9ce7e83082 100644
--- a/src/resources/assets/miscutils/lang/en_US.lang
+++ b/src/resources/assets/miscutils/lang/en_US.lang
@@ -2609,7 +2609,7 @@ item.particle.ion.Antimony.name=Antimony Ion
item.particle.ion.Tellurium.name=Tellurium Ion
item.particle.ion.Iodine.name=Iodine Ion
item.particle.ion.Xenon.name=Xenon Ion
-item.particle.ion.Cesium.name=Cesium Ion
+item.particle.ion.Cesium.name=Caesium Ion
item.particle.ion.Barium.name=Barium Ion
item.particle.ion.Lanthanum.name=Lanthanum Ion
item.particle.ion.Cerium.name=Cerium Ion
@@ -2770,4 +2770,105 @@ item.itemNuggetTeflon.name=Teflon Nugget
item.itemPlateTeflon.name=Teflon Plate
item.itemPlateDoubleTeflon.name=Double Teflon Plate
item.itemCellTeflon.name=Teflon Cell
-tile.Block of Teflon.name=Block of Teflon \ No newline at end of file
+tile.Block of Teflon.name=Block of Teflon
+
+//Added 17/4/19
+//Spelling Corrections
+item.particle.ion.Aluminium.name=Aluminium Ion
+item.particle.ion.Caesium.name=Caesium Ion
+
+item.GTPP.MonsterKiller.Enderman.name=Enderman Killer
+item.GTPP.MonsterKiller.Spider.name=Spider Killer
+item.GTPP.MonsterKiller.Skeleton.name=Skeleton Killer
+item.GTPP.MonsterKiller.Creeper.name=Creeper Killer
+item.GTPP.MonsterKiller.Zombie.name=Zombie Killer
+item.GTPP.MonsterKiller.Hellish.name=Nether Mob Killer
+
+item.itemIngotRunite.name=Runite Ingot
+item.itemDustRunite.name=Runite Dust
+item.itemDustTinyRunite.name=Tiny Pile of Runite Dust
+item.itemDustSmallRunite.name=Small Pile of Runite Dust
+item.itemNuggetRunite.name=Runite Nugget
+item.itemPlateRunite.name=Runite Plate
+item.itemPlateDoubleRunite.name=Double Runite Plate
+item.itemCellRunite.name=Runite Cell
+tile.Block of Runite.name=Block of Runite
+
+item.itemIngotDragonblood.name=Dragonblood Ingot
+item.itemDustDragonblood.name=Dragonblood Dust
+item.itemDustTinyDragonblood.name=Tiny Pile of Dragonblood Dust
+item.itemDustSmallDragonblood.name=Small Pile of Dragonblood Dust
+item.itemNuggetDragonblood.name=Dragonblood Nugget
+item.itemPlateDragonblood.name=Dragonblood Plate
+item.itemPlateDoubleDragonblood.name=Double Dragonblood Plate
+item.itemCellDragonblood.name=Dragonblood Cell
+tile.Block of Dragonblood.name=Block of Dragonblood
+
+item.itemIngotBlackTitanium.name=Black Titanium Ingot
+item.itemDustBlackTitanium.name=Black Titanium Dust
+item.itemDustTinyBlackTitanium.name=Tiny Pile of Black Titanium Dust
+item.itemDustSmallBlackTitanium.name=Small Pile of Black Titanium Dust
+item.itemNuggetBlackTitanium.name=Black Titanium Nugget
+item.itemPlateBlackTitanium.name=Black Titanium Plate
+item.itemPlateDoubleBlackTitanium.name=Double Black Titanium Plate
+item.itemCellBlackTitanium.name=Black Titanium Cell
+tile.Block of Black Titanium.name=Block of Black Titanium
+
+item.itemIngotAncientGranite.name=Ancient Granite Ingot
+item.itemHotIngotAncientGranite.name=Hot Ancient Granite Ingot
+item.itemDustAncientGranite.name=Ancient Granite Dust
+item.itemDustTinyAncientGranite.name=Tiny Pile of Ancient Granite Dust
+item.itemDustSmallAncientGranite.name=Small Pile of Ancient Granite Dust
+item.itemNuggetAncientGranite.name=Ancient Granite Nugget
+item.itemPlateAncientGranite.name=Ancient Granite Plate
+item.itemPlateDoubleAncientGranite.name=Double Ancient Granite Plate
+tile.Block of Ancient Granite.name=Block of Ancient Granite
+
+item.itemIngotBabbitAlloy.name=Babbit Alloy Ingot
+item.itemHotIngotBabbitAlloy.name=Hot Babbit Alloy Ingot
+item.itemDustBabbitAlloy.name=Babbit Alloy Dust
+item.itemDustTinyBabbitAlloy.name=Tiny Pile of Babbit Alloy Dust
+item.itemDustSmallBabbitAlloy.name=Small Pile of Babbit Alloy Dust
+item.itemNuggetBabbitAlloy.name=Babbit Alloy Nugget
+item.itemPlateBabbitAlloy.name=Babbit Alloy Plate
+item.itemPlateDoubleBabbitAlloy.name=Double Babbit Alloy Plate
+item.itemCellBabbitAlloy.name=Babbit Alloy Cell
+tile.Block of Babbit Alloy.name=Block of Babbit Alloy
+
+item.itemIngotBlackMetal.name=Black Metal Ingot
+item.itemHotIngotBlackMetal.name=Hot Black Metal Ingot
+item.itemDustBlackMetal.name=Black Metal Dust
+item.itemDustTinyBlackMetal.name=Tiny Pile of Black Metal Dust
+item.itemDustSmallBlackMetal.name=Small Pile of Black Metal Dust
+item.itemNuggetBlackMetal.name=Black Metal Nugget
+item.itemPlateBlackMetal.name=Black Metal Plate
+item.itemPlateDoubleBlackMetal.name=Double Black Metal Plate
+item.itemBoltBlackMetal.name=Black Metal Bolt
+item.itemRodBlackMetal.name=Black Metal Rod
+item.itemRodLongBlackMetal.name=Long Black Metal Rod
+item.itemRingBlackMetal.name=Black Metal Ring
+item.itemScrewBlackMetal.name=Black Metal Screw
+item.itemRotorBlackMetal.name=Black Metal Rotor
+item.itemGearBlackMetal.name=Black Metal Gear
+item.itemCellBlackMetal.name=Black Metal Cell
+tile.Block of Black Metal.name=Block of Black Metal
+tile.Black Metal Frame Box.name=Black Metal Frame Box
+
+item.itemIngotWhiteMetal.name=White Metal Ingot
+item.itemHotIngotWhiteMetal.name=Hot White Metal Ingot
+item.itemDustWhiteMetal.name=White Metal Dust
+item.itemDustTinyWhiteMetal.name=Tiny Pile of White Metal Dust
+item.itemDustSmallWhiteMetal.name=Small Pile of White Metal Dust
+item.itemNuggetWhiteMetal.name=White Metal Nugget
+item.itemPlateWhiteMetal.name=White Metal Plate
+item.itemPlateDoubleWhiteMetal.name=Double White Metal Plate
+item.itemBoltWhiteMetal.name=White Metal Bolt
+item.itemRodWhiteMetal.name=White Metal Rod
+item.itemRodLongWhiteMetal.name=Long White Metal Rod
+item.itemRingWhiteMetal.name=White Metal Ring
+item.itemScrewWhiteMetal.name=White Metal Screw
+item.itemRotorWhiteMetal.name=White Metal Rotor
+item.itemGearWhiteMetal.name=White Metal Gear
+item.itemCellWhiteMetal.name=White Metal Cell
+tile.Block of White Metal.name=Block of White Metal
+tile.White Metal Frame Box.name=White Metal Frame Box \ No newline at end of file