aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlkalus <Draknyte1@hotmail.com>2020-05-25 13:28:22 +0100
committerAlkalus <Draknyte1@hotmail.com>2020-05-25 13:28:22 +0100
commit6f6a22a69f307db13a94aef472e5aab6876791db (patch)
tree481e47bf0b2e4411b596183db1239d8ba018d38d
parent6fb4b8a333e69bd591d49d9c5f251797de333c7b (diff)
downloadGT5-Unofficial-6f6a22a69f307db13a94aef472e5aab6876791db.tar.gz
GT5-Unofficial-6f6a22a69f307db13a94aef472e5aab6876791db.tar.bz2
GT5-Unofficial-6f6a22a69f307db13a94aef472e5aab6876791db.zip
+ Added a Large Steam Macerator.
% Made the Volumetric Flask Configurator tooltip better.
-rw-r--r--src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java67
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java1
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java294
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java113
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java18
6 files changed, 431 insertions, 65 deletions
diff --git a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
index 21f3e1d6cd..fab74183aa 100644
--- a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
+++ b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
@@ -43,71 +43,7 @@ import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaGarbageCollector;
import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_FluidCanning;
import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_Recycling;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.Gregtech4Content;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechAdvancedBoilers;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechAdvancedMixer;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechAlgaeContent;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechAmazonWarehouse;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechBedrockPlatforms;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechBufferDynamos;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechComponentAssembler;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechCustomHatches;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechCyclotron;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechDehydrator;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechEnergyBuffer;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechFactoryGradeReplacementMultis;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechFluidReactor;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechGeneratorsULV;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechGeothermalThermalGenerator;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechHiAmpTransformer;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialArcFurnace;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialBlastSmelter;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialCentrifuge;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialCokeOven;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialCuttingFactory;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialElectrolyzer;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialExtruder;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialFishPond;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialAlloySmelter;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialFuelRefinery;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialGeneratorArray;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialMacerator;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialMassFabricator;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialMixer;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialMultiMachine;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialMultiTank;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialPlatePress;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialSifter;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialThermalCentrifuge;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialTreeFarm;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialWashPlant;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIndustrialWiremill;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIronBlastFurnace;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechIsaMill;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechLFTR;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechLargeTurbinesAndHeatExchanger;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechMiniRaFusion;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechNaqReactor;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechPollutionDevices;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechPowerBreakers;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechPowerSubStation;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechRTG;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechRocketFuelGenerator;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSafeBlock;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSemiFluidgenerators;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSimpleWasher;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSolarGenerators;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSolarTower;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSteamCondenser;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechSuperChests;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechTeslaTower;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechThaumcraftDevices;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechThreadedBuffers;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechTieredChunkloaders;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechTieredFluidTanks;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechTreeFarmerTE;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechWirelessChargers;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.NewHorizonsAccelerator;
+import gtPlusPlus.xmod.gregtech.registration.gregtech.*;
import net.minecraft.item.ItemStack;
public class COMPAT_HANDLER {
@@ -220,6 +156,7 @@ public class COMPAT_HANDLER {
GregtechAlgaeContent.run();
GregtechIndustrialAlloySmelter.run();
GregtechIsaMill.run();
+ GregtechSteamMultis.run();
//New Horizons Content
NewHorizonsAccelerator.run();
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java
index f9f271ee39..14344c1817 100644
--- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java
@@ -56,6 +56,7 @@ public class ItemBlockBasicTile extends ItemBlock {
}
else if (this.mID == 8){ // Volumetric Flask Setter
list.add("Easy Flask Configuration");
+ list.add("Configure default input slot with a screwdriver");
}
else if (this.mID == 9){
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index b7662ca25e..99bd8e916c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -392,6 +392,9 @@ public enum GregtechItemList implements GregtechItemContainer {
// Flotation Cell
Controller_Flotation_Cell,
+
+ // Big Steam Macerator
+ Controller_SteamMaceratorMulti,
//----------------------------------------------------------------------------
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
new file mode 100644
index 0000000000..083af9f2f5
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_SteamMultiBase.java
@@ -0,0 +1,294 @@
+package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base;
+
+import static gregtech.api.enums.GT_Values.V;
+import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.ArrayUtils;
+
+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.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.fluids.FluidStack;
+
+public abstract class GregtechMeta_SteamMultiBase extends GregtechMeta_MultiBlockBase {
+
+ private int aMaxParallelForCurrentRecipe = 0;
+
+ public GregtechMeta_SteamMultiBase(String aName) {
+ super(aName);
+ }
+
+ public GregtechMeta_SteamMultiBase(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ @Override
+ public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) {
+ if (aSide == aFacing) {
+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[getCasingTextureIndex()], aActive ? getFrontOverlayActive() : getFrontOverlay()};
+ }
+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[getCasingTextureIndex()]};
+ }
+
+ protected abstract GT_RenderedTexture getFrontOverlay();
+
+ protected abstract GT_RenderedTexture getFrontOverlayActive();
+
+ private int getCasingTextureIndex() {
+ return 0;
+ }
+
+ @Override
+ public boolean hasSlotInGUI() {
+ return false;
+ }
+
+ @Override
+ public String getCustomGUIResourceName() {
+ return null;
+ }
+
+ @Override
+ public int getEuDiscountForParallelism() {
+ return 0;
+ }
+
+ @Override
+ public boolean checkRecipe(ItemStack arg0) {
+
+ log("Running checkRecipeGeneric(0)");
+ ArrayList<ItemStack> tItems = getStoredInputs();
+ ArrayList<FluidStack> tFluids = getStoredFluids();
+ GT_Recipe_Map tMap = this.getRecipeMap();
+ if (tMap == null) {
+ return false;
+ }
+ ItemStack[] aItemInputs = tItems.toArray(new ItemStack[tItems.size()]);
+ FluidStack[] aFluidInputs = tFluids.toArray(new FluidStack[tFluids.size()]);
+ GT_Recipe tRecipe = tMap.findRecipe(getBaseMetaTileEntity(), mLastRecipe, false, V[1], null, null, aItemInputs);
+ if (tRecipe == null) {
+ return false;
+ }
+
+ int aEUPercent = 100;
+ int aSpeedBonusPercent = 0;
+ int aOutputChanceRoll = 10000;
+
+ // Reset outputs and progress stats
+ this.mEUt = 0;
+ this.mMaxProgresstime = 0;
+ this.mOutputItems = new ItemStack[]{};
+ this.mOutputFluids = new FluidStack[]{};
+
+
+ log("Running checkRecipeGeneric(1)");
+ // Remember last recipe - an optimization for findRecipe()
+ this.mLastRecipe = tRecipe;
+
+
+ int aMaxParallelRecipes = this.canBufferOutputs(tRecipe, this.getMaxParallelRecipes());
+ if (aMaxParallelRecipes == 0) {
+ log("BAD RETURN - 2");
+ return false;
+ }
+ aMaxParallelForCurrentRecipe = aMaxParallelRecipes;
+ // 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("tRecipeEUt: "+tRecipeEUt);
+
+
+
+ // Count recipes to do in parallel, consuming input items and fluids and considering input voltage limits
+ for (; parallelRecipes < aMaxParallelRecipes && tTotalEUt < (32 - 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 * 2);
+
+ this.mEUt = (int)Math.ceil(tTotalEUt * 3);
+
+ //this.mEUt = (3 * tRecipe.mEUt);
+
+ this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
+ this.mEfficiencyIncrease = 10000;
+
+ 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;
+ aMaxParallelForCurrentRecipe = 0;
+ updateSlots();
+
+ // Play sounds (GT++ addition - GT multiblocks play no sounds)
+ startProcess();
+
+ log("GOOD RETURN - 1");
+ return true;
+
+ }
+
+ public ArrayList<FluidStack> getAllSteamStacks(){
+ ArrayList<FluidStack> aFluids = new ArrayList<FluidStack>();
+ FluidStack aSteam = FluidUtils.getSteam(1);
+ for (FluidStack aFluid : this.getStoredFluids()) {
+ if (aFluid.isFluidEqual(aSteam)) {
+ aFluids.add(aFluid);
+ }
+ }
+ return aFluids;
+ }
+
+ public int getTotalSteamStored() {
+ int aSteam = 0;
+ for (FluidStack aFluid : getAllSteamStacks()) {
+ aSteam += aFluid.amount;
+ }
+ return aSteam;
+ }
+
+ public boolean tryConsumeSteam(int aAmount) {
+ if (getTotalSteamStored() <= 0) {
+ return false;
+ }
+ else {
+ return this.depleteInput(FluidUtils.getSteam(aAmount));
+ }
+ }
+
+ @Override
+ public int getMaxEfficiency(ItemStack arg0) {
+ return 0;
+ }
+
+
+ /**
+ * Called every tick the Machine runs
+ */
+ public boolean onRunningTick(ItemStack aStack) {
+ if (mEUt < 0) {
+ long aSteamVal = (((long) -mEUt * 10000) / Math.max(1000, mEfficiency));
+ Logger.INFO("Trying to drain "+aSteamVal+" steam per tick.");
+ //aMaxParallelForCurrentRecipe
+ if (!tryConsumeSteam((int) aSteamVal)) {
+ stopMachine();
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setInteger("aMaxParallelForCurrentRecipe", aMaxParallelForCurrentRecipe);
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ aMaxParallelForCurrentRecipe = aNBT.getInteger("aMaxParallelForCurrentRecipe");
+ }
+
+ @Override
+ public void stopMachine() {
+ super.stopMachine();
+ aMaxParallelForCurrentRecipe = 0;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java
new file mode 100644
index 0000000000..6e87e4c191
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java
@@ -0,0 +1,113 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam;
+
+import static gregtech.api.GregTech_API.sBlockCasings4;
+
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Recipe;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_SteamMultiBase;
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class GregtechMetaTileEntity_SteamMacerator extends GregtechMeta_SteamMultiBase {
+
+ private String mCasingName = "Robust Tungstensteel Machine Casing";
+
+ public GregtechMetaTileEntity_SteamMacerator(String aName) {
+ super(aName);
+ }
+
+ public GregtechMetaTileEntity_SteamMacerator(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity arg0) {
+ return new GregtechMetaTileEntity_SteamMacerator(this.mName);
+ }
+
+ public boolean isFacingValid(byte aFacing) {
+ return aFacing > 1;
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlay() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_FRONT_STEAM_MACERATOR);
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlayActive() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_FRONT_STEAM_MACERATOR_ACTIVE);
+ }
+
+ @Override
+ public String getMachineType() {
+ return "Macerator";
+ }
+
+ @Override
+ public String[] getTooltip() {
+ if (mCasingName.contains("gt.blockcasings")) {
+ mCasingName = ItemList.Casing_RobustTungstenSteel.get(1).getDisplayName();
+ }
+ return new String[]{
+ "Controller Block for the Steam Macerator",
+ "Macerates "+getMaxParallelRecipes()+" ores at a time",
+ "Size(WxHxD): 3x3x3 (Hollow), Controller (Front centered)",
+ "1x Input Bus (Any casing)",
+ "1x Steam Hatch (Any casing)",
+ "1x Output Bus (Any casing)",
+ mCasingName+"s for the rest (16 at least!)"
+ };
+ }
+
+ @Override
+ public int getMaxParallelRecipes() {
+ return 8;
+ }
+
+
+ public GT_Recipe.GT_Recipe_Map getRecipeMap() {
+ return GT_Recipe.GT_Recipe_Map.sMaceratorRecipes;
+ }
+
+ @Override
+ public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
+ int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
+ int tAmount = 0;
+ if (!aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir)) {
+ return false;
+ } else {
+ for (int i = -1; i < 2; ++i) {
+ for (int j = -1; j < 2; ++j) {
+ for (int h = -1; h < 2; ++h) {
+ if (h != 0 || (xDir + i != 0 || zDir + j != 0) && (i != 0 || j != 0)) {
+ IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i,
+ h, zDir + j);
+ Block aBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
+ int aMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
+
+ if (!isValidBlockForStructure(tTileEntity, 48, true, aBlock, aMeta,
+ sBlockCasings4, 0)) {
+ Logger.INFO("Bad centrifuge casing");
+ return false;
+ }
+ ++tAmount;
+
+ }
+ }
+ }
+ }
+ return tAmount >= 10;
+ }
+ }
+
+
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java
new file mode 100644
index 0000000000..cdb9eddea8
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSteamMultis.java
@@ -0,0 +1,18 @@
+package gtPlusPlus.xmod.gregtech.registration.gregtech;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamMacerator;
+
+public class GregtechSteamMultis {
+
+ public static void run(){
+
+ Logger.INFO("Gregtech5u Content | Registering Steam Multiblocks.");
+
+ GregtechItemList.Controller_SteamMaceratorMulti.set(new GregtechMetaTileEntity_SteamMacerator(31030, "gtpp.multimachine.steam.macerator", "Steam Grinder").getStackForm(1L));
+
+
+ }
+
+}