AdvMiner rewriting; now it's Ore Drilling Plant
Four tiers of Ore Drilling Plant I - radius is 3 chunks MV+ (default) II - radius is 4 chunks HV+ III - radius is 6 chunks EV+ IV - radius is 9 chunks IV+ New behavior: - pick pipes after mining finish - extract ore block before moving down
This commit is contained in:
parent
21f2b50507
commit
b187410005
15 changed files with 620 additions and 349 deletions
|
@ -536,7 +536,7 @@ public enum ItemList implements IItemContainer {
|
||||||
Casing_ULV, Casing_LV, Casing_MV, Casing_HV, Casing_EV, Casing_IV, Casing_LuV, Casing_ZPM, Casing_UV, Casing_MAX, Casing_BronzePlatedBricks, Casing_HeatProof, Casing_Coil_Cupronickel_Deprecated, Casing_Coil_Kanthal_Deprecated, Casing_Coil_Nichrome_Deprecated, Casing_Coil_Superconductor,
|
Casing_ULV, Casing_LV, Casing_MV, Casing_HV, Casing_EV, Casing_IV, Casing_LuV, Casing_ZPM, Casing_UV, Casing_MAX, Casing_BronzePlatedBricks, Casing_HeatProof, Casing_Coil_Cupronickel_Deprecated, Casing_Coil_Kanthal_Deprecated, Casing_Coil_Nichrome_Deprecated, Casing_Coil_Superconductor,
|
||||||
Casing_SolidSteel, Casing_FrostProof, Casing_Gearbox_Bronze, Casing_Gearbox_Steel, Casing_Gearbox_Titanium, Casing_Gearbox_TungstenSteel, Casing_Processor, Casing_DataDrive, Casing_ContainmentField, Casing_Assembler, Casing_Pump, Casing_Motor, Casing_Pipe_Bronze, Casing_Pipe_Steel, Casing_Pipe_Titanium, Casing_Pipe_TungstenSteel,
|
Casing_SolidSteel, Casing_FrostProof, Casing_Gearbox_Bronze, Casing_Gearbox_Steel, Casing_Gearbox_Titanium, Casing_Gearbox_TungstenSteel, Casing_Processor, Casing_DataDrive, Casing_ContainmentField, Casing_Assembler, Casing_Pump, Casing_Motor, Casing_Pipe_Bronze, Casing_Pipe_Steel, Casing_Pipe_Titanium, Casing_Pipe_TungstenSteel,
|
||||||
Casing_Stripes_A, Casing_Stripes_B, Casing_RadioactiveHazard, Casing_BioHazard, Casing_ExplosionHazard, Casing_FireHazard, Casing_AcidHazard, Casing_MagicHazard, Casing_FrostHazard, Casing_NoiseHazard, Casing_Grate, Casing_Vent, Casing_RadiationProof, Casing_Firebox_Bronze, Casing_Firebox_Steel, Casing_Firebox_TungstenSteel,
|
Casing_Stripes_A, Casing_Stripes_B, Casing_RadioactiveHazard, Casing_BioHazard, Casing_ExplosionHazard, Casing_FireHazard, Casing_AcidHazard, Casing_MagicHazard, Casing_FrostHazard, Casing_NoiseHazard, Casing_Grate, Casing_Vent, Casing_RadiationProof, Casing_Firebox_Bronze, Casing_Firebox_Steel, Casing_Firebox_TungstenSteel,
|
||||||
Casing_RobustTungstenSteel, Casing_CleanStainlessSteel, Casing_StableTitanium, Casing_Firebox_Titanium,
|
Casing_MiningOsmiridium, Casing_RobustTungstenSteel, Casing_CleanStainlessSteel, Casing_StableTitanium, Casing_Firebox_Titanium,
|
||||||
Hull_ULV, Hull_LV, Hull_MV, Hull_HV, Hull_EV, Hull_IV, Hull_LuV, Hull_ZPM, Hull_UV, Hull_MAX,
|
Hull_ULV, Hull_LV, Hull_MV, Hull_HV, Hull_EV, Hull_IV, Hull_LuV, Hull_ZPM, Hull_UV, Hull_MAX,
|
||||||
|
|
||||||
Automation_Filter_ULV, Automation_Filter_LV, Automation_Filter_MV, Automation_Filter_HV, Automation_Filter_EV, Automation_Filter_IV, Automation_Filter_LuV, Automation_Filter_ZPM, Automation_Filter_UV, Automation_Filter_MAX,
|
Automation_Filter_ULV, Automation_Filter_LV, Automation_Filter_MV, Automation_Filter_HV, Automation_Filter_EV, Automation_Filter_IV, Automation_Filter_LuV, Automation_Filter_ZPM, Automation_Filter_UV, Automation_Filter_MAX,
|
||||||
|
@ -632,7 +632,7 @@ public enum ItemList implements IItemContainer {
|
||||||
Casing_Coil_Cupronickel, Casing_Coil_Kanthal, Casing_Coil_Nichrome, Casing_Coil_TungstenSteel, Casing_Coil_HSSG, Casing_Coil_Naquadah, Casing_Coil_NaquadahAlloy,
|
Casing_Coil_Cupronickel, Casing_Coil_Kanthal, Casing_Coil_Nichrome, Casing_Coil_TungstenSteel, Casing_Coil_HSSG, Casing_Coil_Naquadah, Casing_Coil_NaquadahAlloy,
|
||||||
MobRep_LV, MobRep_MV, MobRep_HV, MobRep_EV, MobRep_IV, MobRep_LuV, MobRep_ZPM, MobRep_UV, Cover_PlayerDetector, Machine_Multi_HeatExchanger,
|
MobRep_LV, MobRep_MV, MobRep_HV, MobRep_EV, MobRep_IV, MobRep_LuV, MobRep_ZPM, MobRep_UV, Cover_PlayerDetector, Machine_Multi_HeatExchanger,
|
||||||
Block_BronzePlate, Block_IridiumTungstensteel, Block_Plascrete, Block_TungstenSteelReinforced,
|
Block_BronzePlate, Block_IridiumTungstensteel, Block_Plascrete, Block_TungstenSteelReinforced,
|
||||||
Honeycomb, Charcoal_Pile, Block_BrittleCharcoal, Seismic_Prospector, Seismic_Prospector_Adv, OilDrill, AdvancedMiner2, PyrolyseOven, OilCracker, Crop_Drop_UUMBerry, Crop_Drop_UUABerry, Empty_Board_Basic, Empty_Board_Elite,
|
Honeycomb, Charcoal_Pile, Block_BrittleCharcoal, Seismic_Prospector, Seismic_Prospector_Adv, OilDrill, OreDrill1, OreDrill2, OreDrill3, OreDrill4, PyrolyseOven, OilCracker, Crop_Drop_UUMBerry, Crop_Drop_UUABerry, Empty_Board_Basic, Empty_Board_Elite,
|
||||||
Battery_Charger_4by4_ULV, Battery_Charger_4by4_LV, Battery_Charger_4by4_MV, Battery_Charger_4by4_HV, Battery_Charger_4by4_EV, Battery_Charger_4by4_IV, Battery_Charger_4by4_LuV, Battery_Charger_4by4_ZPM, Battery_Charger_4by4_UV, Battery_Charger_4by4_MAX,
|
Battery_Charger_4by4_ULV, Battery_Charger_4by4_LV, Battery_Charger_4by4_MV, Battery_Charger_4by4_HV, Battery_Charger_4by4_EV, Battery_Charger_4by4_IV, Battery_Charger_4by4_LuV, Battery_Charger_4by4_ZPM, Battery_Charger_4by4_UV, Battery_Charger_4by4_MAX,
|
||||||
MicroTransmitter_HV, MicroTransmitter_EV, MicroTransmitter_IV, MicroTransmitter_LUV, MicroTransmitter_ZPM,
|
MicroTransmitter_HV, MicroTransmitter_EV, MicroTransmitter_IV, MicroTransmitter_LUV, MicroTransmitter_ZPM,
|
||||||
Crop_Drop_Bauxite, Crop_Drop_Ilmenite, Crop_Drop_Pitchblende, Crop_Drop_Uraninite, Crop_Drop_Thorium, Crop_Drop_Nickel, Crop_Drop_Zinc, Crop_Drop_Manganese, Crop_Drop_Scheelite, Crop_Drop_Platinum, Crop_Drop_Iridium, Crop_Drop_Osmium, Crop_Drop_Naquadah, Uraniumcell_1, Uraniumcell_2, Uraniumcell_4, Moxcell_1, Moxcell_2, Moxcell_4,
|
Crop_Drop_Bauxite, Crop_Drop_Ilmenite, Crop_Drop_Pitchblende, Crop_Drop_Uraninite, Crop_Drop_Thorium, Crop_Drop_Nickel, Crop_Drop_Zinc, Crop_Drop_Manganese, Crop_Drop_Scheelite, Crop_Drop_Platinum, Crop_Drop_Iridium, Crop_Drop_Osmium, Crop_Drop_Naquadah, Uraniumcell_1, Uraniumcell_2, Uraniumcell_4, Moxcell_1, Moxcell_2, Moxcell_4,
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class Textures {
|
||||||
MACHINE_MV_SIDE, MACHINE_MV_BOTTOM, MACHINE_HV_TOP, MACHINE_HV_SIDE, MACHINE_HV_BOTTOM, MACHINE_EV_TOP, MACHINE_EV_SIDE, MACHINE_EV_BOTTOM, MACHINE_IV_TOP,
|
MACHINE_MV_SIDE, MACHINE_MV_BOTTOM, MACHINE_HV_TOP, MACHINE_HV_SIDE, MACHINE_HV_BOTTOM, MACHINE_EV_TOP, MACHINE_EV_SIDE, MACHINE_EV_BOTTOM, MACHINE_IV_TOP,
|
||||||
MACHINE_IV_SIDE, MACHINE_IV_BOTTOM, MACHINE_LuV_TOP, MACHINE_LuV_SIDE, MACHINE_LuV_BOTTOM, MACHINE_ZPM_TOP, MACHINE_ZPM_SIDE, MACHINE_ZPM_BOTTOM, MACHINE_UV_TOP,
|
MACHINE_IV_SIDE, MACHINE_IV_BOTTOM, MACHINE_LuV_TOP, MACHINE_LuV_SIDE, MACHINE_LuV_BOTTOM, MACHINE_ZPM_TOP, MACHINE_ZPM_SIDE, MACHINE_ZPM_BOTTOM, MACHINE_UV_TOP,
|
||||||
MACHINE_UV_SIDE, MACHINE_UV_BOTTOM, MACHINE_MAX_TOP, MACHINE_MAX_SIDE, MACHINE_MAX_BOTTOM, MACHINE_BRONZEPLATEDBRICKS, MACHINE_HEATPROOFCASING, MACHINE_COIL_SUPERCONDUCTOR,
|
MACHINE_UV_SIDE, MACHINE_UV_BOTTOM, MACHINE_MAX_TOP, MACHINE_MAX_SIDE, MACHINE_MAX_BOTTOM, MACHINE_BRONZEPLATEDBRICKS, MACHINE_HEATPROOFCASING, MACHINE_COIL_SUPERCONDUCTOR,
|
||||||
MACHINE_BRONZEBLASTFURNACE, MACHINE_BRONZEBLASTFURNACE_ACTIVE, MACHINE_CASING_ROBUST_TUNGSTENSTEEL, MACHINE_CASING_CLEAN_STAINLESSSTEEL, MACHINE_CASING_STABLE_TITANIUM,
|
MACHINE_BRONZEBLASTFURNACE, MACHINE_BRONZEBLASTFURNACE_ACTIVE, MACHINE_CASING_ROBUST_TUNGSTENSTEEL, MACHINE_CASING_CLEAN_STAINLESSSTEEL, MACHINE_CASING_STABLE_TITANIUM, MACHINE_CASING_MINING_OSMIRIDIUM,
|
||||||
MACHINE_CASING_FIREBOX_TITANIUM, MACHINE_CASING_FUSION_COIL, MACHINE_CASING_FUSION, MACHINE_CASING_FUSION_GLASS, MACHINE_CASING_FUSION_GLASS_YELLOW, MACHINE_CASING_FUSION_2,
|
MACHINE_CASING_FIREBOX_TITANIUM, MACHINE_CASING_FUSION_COIL, MACHINE_CASING_FUSION, MACHINE_CASING_FUSION_GLASS, MACHINE_CASING_FUSION_GLASS_YELLOW, MACHINE_CASING_FUSION_2,
|
||||||
MACHINE_CASING_MAGIC, MACHINE_CASING_MAGIC_ACTIVE, MACHINE_CASING_MAGIC_FRONT, MACHINE_CASING_MAGIC_FRONT_ACTIVE, MACHINE_CASING_DRAGONEGG, MACHINE_CASING_SOLID_STEEL,
|
MACHINE_CASING_MAGIC, MACHINE_CASING_MAGIC_ACTIVE, MACHINE_CASING_MAGIC_FRONT, MACHINE_CASING_MAGIC_FRONT_ACTIVE, MACHINE_CASING_DRAGONEGG, MACHINE_CASING_SOLID_STEEL,
|
||||||
MACHINE_CASING_FROST_PROOF, MACHINE_CASING_PUMP, MACHINE_CASING_MOTOR, MACHINE_CASING_PIPE_BRONZE, MACHINE_CASING_PIPE_STEEL, MACHINE_CASING_PIPE_TITANIUM, MACHINE_CASING_PIPE_TUNGSTENSTEEL,
|
MACHINE_CASING_FROST_PROOF, MACHINE_CASING_PUMP, MACHINE_CASING_MOTOR, MACHINE_CASING_PIPE_BRONZE, MACHINE_CASING_PIPE_STEEL, MACHINE_CASING_PIPE_TITANIUM, MACHINE_CASING_PIPE_TUNGSTENSTEEL,
|
||||||
|
|
|
@ -393,6 +393,11 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getCurrentEfficiency(ItemStack itemStack) {
|
||||||
|
int maxEff = getMaxEfficiency(itemStack);
|
||||||
|
return maxEff - (getIdealStatus() - getRepairStatus()) * maxEff / 10;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean doRandomMaintenanceDamage() {
|
public boolean doRandomMaintenanceDamage() {
|
||||||
if (!isCorrectMachinePart(mInventory[1]) || getRepairStatus() == 0) {
|
if (!isCorrectMachinePart(mInventory[1]) || getRepairStatus() == 0) {
|
||||||
stopMachine();
|
stopMachine();
|
||||||
|
|
|
@ -1950,6 +1950,11 @@ public class GT_Utility {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static <T> T[] listToArray(List<T> list) {
|
||||||
|
return (T[]) list.toArray();
|
||||||
|
}
|
||||||
|
|
||||||
public static class ItemNBT {
|
public static class ItemNBT {
|
||||||
public static void setNBT(ItemStack aStack, NBTTagCompound aNBT) {
|
public static void setNBT(ItemStack aStack, NBTTagCompound aNBT) {
|
||||||
if (aNBT == null) {
|
if (aNBT == null) {
|
||||||
|
|
|
@ -37,6 +37,7 @@ public class GT_Block_Casings4
|
||||||
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".11.name", "Titanium Turbine Casing");
|
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".11.name", "Titanium Turbine Casing");
|
||||||
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".12.name", "Tungstensteel Turbine Casing");
|
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".12.name", "Tungstensteel Turbine Casing");
|
||||||
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".13.name", "Engine Intake Casing");
|
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".13.name", "Engine Intake Casing");
|
||||||
|
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".14.name", "Mining Osmiridium Casing");
|
||||||
|
|
||||||
ItemList.Casing_RobustTungstenSteel.set(new ItemStack(this, 1, 0));
|
ItemList.Casing_RobustTungstenSteel.set(new ItemStack(this, 1, 0));
|
||||||
ItemList.Casing_CleanStainlessSteel.set(new ItemStack(this, 1, 1));
|
ItemList.Casing_CleanStainlessSteel.set(new ItemStack(this, 1, 1));
|
||||||
|
@ -50,6 +51,7 @@ public class GT_Block_Casings4
|
||||||
ItemList.Casing_Turbine2.set(new ItemStack(this, 1, 11));
|
ItemList.Casing_Turbine2.set(new ItemStack(this, 1, 11));
|
||||||
ItemList.Casing_Turbine3.set(new ItemStack(this, 1, 12));
|
ItemList.Casing_Turbine3.set(new ItemStack(this, 1, 12));
|
||||||
ItemList.Casing_EngineIntake.set(new ItemStack(this, 1, 13));
|
ItemList.Casing_EngineIntake.set(new ItemStack(this, 1, 13));
|
||||||
|
ItemList.Casing_MiningOsmiridium.set(new ItemStack(this, 1, 14));
|
||||||
}
|
}
|
||||||
|
|
||||||
public IIcon getIcon(int aSide, int aMeta) {
|
public IIcon getIcon(int aSide, int aMeta) {
|
||||||
|
@ -83,7 +85,7 @@ public class GT_Block_Casings4
|
||||||
case 13:
|
case 13:
|
||||||
return Textures.BlockIcons.MACHINE_CASING_ENGINE_INTAKE.getIcon();
|
return Textures.BlockIcons.MACHINE_CASING_ENGINE_INTAKE.getIcon();
|
||||||
case 14:
|
case 14:
|
||||||
return Textures.BlockIcons.MACHINE_CASING_ROBUST_TUNGSTENSTEEL.getIcon();
|
return Textures.BlockIcons.MACHINE_CASING_MINING_OSMIRIDIUM.getIcon();
|
||||||
case 15:
|
case 15:
|
||||||
return Textures.BlockIcons.MACHINE_CASING_ROBUST_TUNGSTENSTEEL.getIcon();
|
return Textures.BlockIcons.MACHINE_CASING_ROBUST_TUNGSTENSTEEL.getIcon();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,342 +0,0 @@
|
||||||
package gregtech.common.tileentities.machines.multi;
|
|
||||||
|
|
||||||
import gregtech.api.GregTech_API;
|
|
||||||
import gregtech.api.enums.ItemList;
|
|
||||||
import gregtech.api.enums.Materials;
|
|
||||||
import gregtech.api.enums.OrePrefixes;
|
|
||||||
import gregtech.api.enums.Textures;
|
|
||||||
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
|
|
||||||
import gregtech.api.interfaces.ITexture;
|
|
||||||
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
|
|
||||||
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
|
||||||
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
|
|
||||||
import gregtech.api.objects.GT_RenderedTexture;
|
|
||||||
import gregtech.api.objects.ItemData;
|
|
||||||
import gregtech.api.util.GT_ModHandler;
|
|
||||||
import gregtech.api.util.GT_OreDictUnificator;
|
|
||||||
import gregtech.api.util.GT_Recipe;
|
|
||||||
import gregtech.api.util.GT_Utility;
|
|
||||||
import gregtech.common.blocks.GT_Block_Ores_Abstract;
|
|
||||||
import gregtech.common.blocks.GT_TileEntity_Ores;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.world.ChunkPosition;
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class GT_MetaTileEntity_AdvMiner2 extends GT_MetaTileEntity_MultiBlockBase {
|
|
||||||
|
|
||||||
private final ArrayList<ChunkPosition> mMineList = new ArrayList();
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_AdvMiner2(int aID, String aName, String aNameRegional) {
|
|
||||||
super(aID, aName, aNameRegional);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GT_MetaTileEntity_AdvMiner2(String aName) {
|
|
||||||
super(aName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getDescription() {
|
|
||||||
return new String[]{
|
|
||||||
"Controller Block for the Advanced Miner II",
|
|
||||||
"Size(WxHxD): 3x7x3, Controller (Front middle bottom)",
|
|
||||||
"3x1x3 Base of Solid Steel Casings",
|
|
||||||
"1x3x1 Solid Steel Casing pillar (Center of base)",
|
|
||||||
"1x3x1 Steel Frame Boxes (Each Steel pillar side and on top)",
|
|
||||||
"1x Input Hatch (Any bottom layer casing)",
|
|
||||||
"1x Output Bus (Any bottom layer casing)",
|
|
||||||
"1x Maintenance Hatch (Any bottom layer casing)",
|
|
||||||
"1x MV+ Energy Hatch (Any bottom layer casing)"};
|
|
||||||
}
|
|
||||||
|
|
||||||
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
|
|
||||||
if (aSide == aFacing) {
|
|
||||||
return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[16], new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_ADVMINER2_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_ADVMINER2)};
|
|
||||||
}
|
|
||||||
return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[16]};
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
|
|
||||||
return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "AdvMiner2.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkRecipe(ItemStack aStack) {
|
|
||||||
if (mInventory[1] == null || (mInventory[1].isItemEqual(GT_ModHandler.getIC2Item("miningPipe", 1L)) && mInventory[1].stackSize < mInventory[1].getMaxStackSize())) {
|
|
||||||
ArrayList<ItemStack> tItems = getStoredInputs();
|
|
||||||
for (ItemStack tStack : tItems) {
|
|
||||||
if (tStack.isItemEqual(GT_ModHandler.getIC2Item("miningPipe", 1L))) {
|
|
||||||
tStack.stackSize--;
|
|
||||||
if (tStack.stackSize < 1) {
|
|
||||||
tStack = null;
|
|
||||||
}
|
|
||||||
if (mInventory[1] == null) {
|
|
||||||
mInventory[1] = GT_ModHandler.getIC2Item("miningPipe", 1L);
|
|
||||||
} else {
|
|
||||||
mInventory[1].stackSize++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (mInputHatches == null || mInputHatches.get(0).mFluid == null || mInputHatches.get(0).mFluid.getFluid().getID() != ItemList.sDrillingFluid.getID()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
FluidStack tFluid = mInputHatches.get(0).mFluid.copy();
|
|
||||||
if (tFluid == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (tFluid.amount < 100) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tFluid.amount = 100;
|
|
||||||
depleteInput(tFluid);
|
|
||||||
long tVoltage = getMaxInputVoltage();
|
|
||||||
if (getBaseMetaTileEntity().getRandomNumber(20) == 0) {
|
|
||||||
if (mMineList.isEmpty()) {
|
|
||||||
int yLevel = getYOfPumpHead();
|
|
||||||
for (int i = -48; i < 49; i++) {
|
|
||||||
for (int f = -48; f < 49; f++) {
|
|
||||||
Block tBlock = getBaseMetaTileEntity().getBlockOffset(i, yLevel - getBaseMetaTileEntity().getYCoord(), f);
|
|
||||||
int tMetaID = getBaseMetaTileEntity().getMetaIDOffset(i, yLevel - getBaseMetaTileEntity().getYCoord(), f);
|
|
||||||
if (tBlock instanceof GT_Block_Ores_Abstract) {
|
|
||||||
TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityOffset(i, yLevel - getBaseMetaTileEntity().getYCoord(), f);
|
|
||||||
if ((tTileEntity!=null) && (tTileEntity instanceof GT_TileEntity_Ores) && ((GT_TileEntity_Ores) tTileEntity).mNatural == true && !mMineList.contains(new ChunkPosition(i, yLevel - getBaseMetaTileEntity().getYCoord(), f))) {
|
|
||||||
mMineList.add(new ChunkPosition(i, yLevel - getBaseMetaTileEntity().getYCoord(), f));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ItemData tAssotiation = GT_OreDictUnificator.getAssociation(new ItemStack(tBlock, 1, tMetaID));
|
|
||||||
if ((tAssotiation != null) && (tAssotiation.mPrefix.toString().startsWith("ore"))) {
|
|
||||||
ChunkPosition cp = new ChunkPosition(i, yLevel - getBaseMetaTileEntity().getYCoord(), f);
|
|
||||||
if (!mMineList.contains(cp)) {
|
|
||||||
mMineList.add(cp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (mMineList.isEmpty()) {
|
|
||||||
if(getBaseMetaTileEntity().getBlockOffset(ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetX, getYOfPumpHead() - 1 - getBaseMetaTileEntity().getYCoord(), ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetZ) != Blocks.bedrock){
|
|
||||||
if (mEnergyHatches.size() > 0 && mEnergyHatches.get(0).getEUVar() > (512 + getMaxInputVoltage() * 4)) {
|
|
||||||
if (!moveOneDown())
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
stopMachine();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ArrayList<ItemStack> tDrops = new ArrayList();
|
|
||||||
Block tMineBlock = null;
|
|
||||||
ChunkPosition mle = null;
|
|
||||||
int posX, posY, posZ, offX, offY, offZ;
|
|
||||||
while ((tMineBlock==null || tMineBlock == Blocks.air) && !mMineList.isEmpty()) {
|
|
||||||
mle = mMineList.get(0);
|
|
||||||
mMineList.remove(0);
|
|
||||||
tMineBlock = getBaseMetaTileEntity().getBlockOffset(mle.chunkPosX, mle.chunkPosY, mle.chunkPosZ);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tMineBlock!=null && tMineBlock!=Blocks.air) {
|
|
||||||
posX = mle.chunkPosX + getBaseMetaTileEntity().getXCoord();
|
|
||||||
posY = mle.chunkPosY + getBaseMetaTileEntity().getYCoord();
|
|
||||||
posZ = mle.chunkPosZ + getBaseMetaTileEntity().getZCoord();
|
|
||||||
offX = mle.chunkPosX;
|
|
||||||
offY = mle.chunkPosY;
|
|
||||||
offZ = mle.chunkPosZ;
|
|
||||||
|
|
||||||
int metadata = getBaseMetaTileEntity().getMetaIDOffset(offX, offY, offZ);
|
|
||||||
boolean silkTouch = tMineBlock.canSilkHarvest(getBaseMetaTileEntity().getWorld(), null, posX, posY, posZ, metadata);
|
|
||||||
if (silkTouch){
|
|
||||||
ItemStack IS = new ItemStack(tMineBlock);
|
|
||||||
IS.setItemDamage(metadata);
|
|
||||||
IS.stackSize=1;
|
|
||||||
tDrops.add(IS);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
tDrops = tMineBlock.getDrops(getBaseMetaTileEntity().getWorld(), posX, posY, posZ, metadata, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
getBaseMetaTileEntity().getWorld().setBlockToAir(posX, posY, posZ);
|
|
||||||
if (!tDrops.isEmpty()) {
|
|
||||||
ItemData tData = GT_OreDictUnificator.getItemData(tDrops.get(0).copy());
|
|
||||||
if (tData.mPrefix != OrePrefixes.crushed && tData.mMaterial.mMaterial != Materials.Oilsands) {
|
|
||||||
|
|
||||||
GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.findRecipe(getBaseMetaTileEntity(), false, tVoltage, null, tDrops.get(0).copy());
|
|
||||||
if (tRecipe != null) {
|
|
||||||
this.mOutputItems = new ItemStack[tRecipe.mOutputs.length];
|
|
||||||
for (int g = 0; g < mOutputItems.length; g++) {
|
|
||||||
mOutputItems[g] = tRecipe.mOutputs[g].copy();
|
|
||||||
if (getBaseMetaTileEntity().getRandomNumber(10000) < tRecipe.getOutputChance(g)) {
|
|
||||||
mOutputItems[g].stackSize *= getBaseMetaTileEntity().getRandomNumber(4) + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.mOutputItems = new ItemStack[tDrops.size()];
|
|
||||||
for (int g = 0; g < mOutputItems.length; g++) {
|
|
||||||
mOutputItems[g] = tDrops.get(g).copy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.mOutputItems = null;
|
|
||||||
ItemStack[] tStack = new ItemStack[tDrops.size()];
|
|
||||||
for (int j = 0; j < tDrops.size(); j++) {
|
|
||||||
tStack[j] = tDrops.get(j).copy();
|
|
||||||
tStack[j].stackSize = tStack[j].stackSize * (getBaseMetaTileEntity().getRandomNumber(4) + 1);
|
|
||||||
}
|
|
||||||
mOutputItems = tStack;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
|
|
||||||
this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
|
|
||||||
this.mEfficiencyIncrease = 10000;
|
|
||||||
int tEU = 48;
|
|
||||||
int tDuration = 24;
|
|
||||||
if (tEU <= 16) {
|
|
||||||
this.mEUt = (tEU * (1 << tTier - 1) * (1 << tTier - 1));
|
|
||||||
this.mMaxProgresstime = (tDuration / (1 << tTier - 1));
|
|
||||||
} else {
|
|
||||||
this.mEUt = tEU;
|
|
||||||
this.mMaxProgresstime = tDuration;
|
|
||||||
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);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean moveOneDown() {
|
|
||||||
if ((this.mInventory[1] == null) || (this.mInventory[1].stackSize < 1)
|
|
||||||
|| (!GT_Utility.areStacksEqual(this.mInventory[1], GT_ModHandler.getIC2Item("miningPipe", 1L)))) {
|
|
||||||
stopMachine();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
int xDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetX;
|
|
||||||
int zDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetZ;
|
|
||||||
int yHead = getYOfPumpHead();
|
|
||||||
if (yHead <= 0) {
|
|
||||||
stopMachine();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, yHead - 1, getBaseMetaTileEntity().getZCoord() + zDir) == Blocks.bedrock) {
|
|
||||||
stopMachine();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!(getBaseMetaTileEntity().getWorld().setBlock(getBaseMetaTileEntity().getXCoord() + xDir, yHead - 1, getBaseMetaTileEntity().getZCoord() + zDir, GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L))))) {
|
|
||||||
stopMachine();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (yHead != getBaseMetaTileEntity().getYCoord()) {
|
|
||||||
getBaseMetaTileEntity().getWorld().setBlock(getBaseMetaTileEntity().getXCoord() + xDir, yHead, getBaseMetaTileEntity().getZCoord() + zDir, GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipe", 1L)));
|
|
||||||
}
|
|
||||||
getBaseMetaTileEntity().decrStackSize(1, 1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getYOfPumpHead() {
|
|
||||||
int xDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetX;
|
|
||||||
int zDir = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing()).offsetZ;
|
|
||||||
int y = getBaseMetaTileEntity().getYCoord() - 1;
|
|
||||||
while (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir) == GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipe", 1L))) {
|
|
||||||
y--;
|
|
||||||
}
|
|
||||||
if (y == getBaseMetaTileEntity().getYCoord() - 1) {
|
|
||||||
if (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir) != GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L))) {
|
|
||||||
return y + 1;
|
|
||||||
}
|
|
||||||
} else if (getBaseMetaTileEntity().getBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir) != GT_Utility
|
|
||||||
.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L)) && this.mInventory[1] != null && this.mInventory[1].stackSize > 0 && GT_Utility.areStacksEqual(this.mInventory[1], GT_ModHandler.getIC2Item("miningPipe", 1L))) {
|
|
||||||
getBaseMetaTileEntity().getWorld().setBlock(getBaseMetaTileEntity().getXCoord() + xDir, y, getBaseMetaTileEntity().getZCoord() + zDir,
|
|
||||||
GT_Utility.getBlockFromStack(GT_ModHandler.getIC2Item("miningPipeTip", 1L)));
|
|
||||||
getBaseMetaTileEntity().decrStackSize(0, 1);
|
|
||||||
}
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
|
|
||||||
int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
|
|
||||||
int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
|
|
||||||
for (int i = -1; i < 2; i++) {
|
|
||||||
for (int j = -1; j < 2; j++) {
|
|
||||||
if ((xDir + i != 0) || (zDir + j != 0)) {
|
|
||||||
IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 0, zDir + j);
|
|
||||||
if ((!addMaintenanceToMachineList(tTileEntity, 16)) && (!addInputToMachineList(tTileEntity, 16)) && (!addOutputToMachineList(tTileEntity, 16)) && (!addEnergyInputToMachineList(tTileEntity, 16))) {
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j) != GregTech_API.sBlockCasings2) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j) != 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int y = 1; y < 4; y++) {
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir, y, zDir) != GregTech_API.sBlockCasings2) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir + 1, y, zDir) != GregTech_API.sBlockMachines) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir - 1, y, zDir) != GregTech_API.sBlockMachines) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir, y, zDir + 1) != GregTech_API.sBlockMachines) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir, y, zDir - 1) != GregTech_API.sBlockMachines) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (aBaseMetaTileEntity.getBlockOffset(xDir, y + 3, zDir) != GregTech_API.sBlockMachines) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isCorrectMachinePart(ItemStack aStack) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMaxEfficiency(ItemStack aStack) {
|
|
||||||
return 10000;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getPollutionPerTick(ItemStack aStack) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDamageToComponent(ItemStack aStack) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean explodesOnComponentBreak(ItemStack aStack) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
|
||||||
return new GT_MetaTileEntity_AdvMiner2(this.mName);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
package gregtech.common.tileentities.machines.multi;
|
||||||
|
|
||||||
|
import gregtech.api.enums.ItemList;
|
||||||
|
import gregtech.api.enums.Materials;
|
||||||
|
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
|
||||||
|
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
||||||
|
|
||||||
|
public class GT_MetaTileEntity_OreDrillingPlant1 extends GT_MetaTileEntity_OreDrillingPlantBase {
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant1(int aID, String aName, String aNameRegional) {
|
||||||
|
super(aID, aName, aNameRegional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant1(String aName) {
|
||||||
|
super(aName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getDescription() {
|
||||||
|
return getDescriptionInternal("I");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
return new GT_MetaTileEntity_OreDrillingPlant1(mName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemList getCasingBlockItem() {
|
||||||
|
return ItemList.Casing_SolidSteel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Materials getFrameMaterial() {
|
||||||
|
return Materials.Steel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getCasingTextureIndex() {
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRadiusInChunks() {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getMinTier() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package gregtech.common.tileentities.machines.multi;
|
||||||
|
|
||||||
|
import gregtech.api.enums.ItemList;
|
||||||
|
import gregtech.api.enums.Materials;
|
||||||
|
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
|
||||||
|
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
||||||
|
|
||||||
|
public class GT_MetaTileEntity_OreDrillingPlant2 extends GT_MetaTileEntity_OreDrillingPlantBase {
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant2(int aID, String aName, String aNameRegional) {
|
||||||
|
super(aID, aName, aNameRegional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant2(String aName) {
|
||||||
|
super(aName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getDescription() {
|
||||||
|
return getDescriptionInternal("II");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
return new GT_MetaTileEntity_OreDrillingPlant2(mName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemList getCasingBlockItem() {
|
||||||
|
return ItemList.Casing_StableTitanium;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Materials getFrameMaterial() {
|
||||||
|
return Materials.Titanium;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getCasingTextureIndex() {
|
||||||
|
return 50;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRadiusInChunks() {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getMinTier() {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package gregtech.common.tileentities.machines.multi;
|
||||||
|
|
||||||
|
import gregtech.api.enums.ItemList;
|
||||||
|
import gregtech.api.enums.Materials;
|
||||||
|
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
|
||||||
|
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
||||||
|
|
||||||
|
public class GT_MetaTileEntity_OreDrillingPlant3 extends GT_MetaTileEntity_OreDrillingPlantBase {
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant3(int aID, String aName, String aNameRegional) {
|
||||||
|
super(aID, aName, aNameRegional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant3(String aName) {
|
||||||
|
super(aName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getDescription() {
|
||||||
|
return getDescriptionInternal("III");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
return new GT_MetaTileEntity_OreDrillingPlant3(mName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemList getCasingBlockItem() {
|
||||||
|
return ItemList.Casing_RobustTungstenSteel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Materials getFrameMaterial() {
|
||||||
|
return Materials.TungstenSteel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getCasingTextureIndex() {
|
||||||
|
return 48;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRadiusInChunks() {
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getMinTier() {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package gregtech.common.tileentities.machines.multi;
|
||||||
|
|
||||||
|
import gregtech.api.enums.ItemList;
|
||||||
|
import gregtech.api.enums.Materials;
|
||||||
|
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
|
||||||
|
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
||||||
|
|
||||||
|
public class GT_MetaTileEntity_OreDrillingPlant4 extends GT_MetaTileEntity_OreDrillingPlantBase {
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant4(int aID, String aName, String aNameRegional) {
|
||||||
|
super(aID, aName, aNameRegional);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlant4(String aName) {
|
||||||
|
super(aName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getDescription() {
|
||||||
|
return getDescriptionInternal("IV");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
|
||||||
|
return new GT_MetaTileEntity_OreDrillingPlant4(mName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ItemList getCasingBlockItem() {
|
||||||
|
return ItemList.Casing_MiningOsmiridium;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Materials getFrameMaterial() {
|
||||||
|
return Materials.Osmiridium;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getCasingTextureIndex() {
|
||||||
|
return 50;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRadiusInChunks() {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getMinTier() {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,386 @@
|
||||||
|
package gregtech.common.tileentities.machines.multi;
|
||||||
|
|
||||||
|
import gregtech.api.GregTech_API;
|
||||||
|
import gregtech.api.enums.*;
|
||||||
|
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
|
||||||
|
import gregtech.api.interfaces.ITexture;
|
||||||
|
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
||||||
|
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
|
||||||
|
import gregtech.api.objects.GT_RenderedTexture;
|
||||||
|
import gregtech.api.objects.ItemData;
|
||||||
|
import gregtech.api.util.*;
|
||||||
|
import gregtech.common.blocks.GT_Block_Ores_Abstract;
|
||||||
|
import gregtech.common.blocks.GT_TileEntity_Ores;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.ChunkPosition;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import static gregtech.api.enums.GT_Values.V;
|
||||||
|
import static gregtech.api.enums.GT_Values.VN;
|
||||||
|
import static gregtech.api.enums.GT_Values.W;
|
||||||
|
|
||||||
|
public abstract class GT_MetaTileEntity_OreDrillingPlantBase extends GT_MetaTileEntity_MultiBlockBase {
|
||||||
|
private static final ItemStack miningPipe = GT_ModHandler.getIC2Item("miningPipe", 0);
|
||||||
|
private static final ItemStack miningPipeTip = GT_ModHandler.getIC2Item("miningPipeTip", 0);
|
||||||
|
private static final Block miningPipeBlock = GT_Utility.getBlockFromStack(miningPipe);
|
||||||
|
private static final Block miningPipeTipBlock = GT_Utility.getBlockFromStack(miningPipeTip);
|
||||||
|
|
||||||
|
private final ArrayList<ChunkPosition> oreBlockPositions = new ArrayList<>();
|
||||||
|
private Block casingBlock;
|
||||||
|
|
||||||
|
private int casingMeta;
|
||||||
|
private int frameMeta;
|
||||||
|
private int casingTextureIndex;
|
||||||
|
|
||||||
|
private ForgeDirection back;
|
||||||
|
private int xDrill, yDrill, zDrill, xCenter, zCenter, yHead;
|
||||||
|
private boolean isPickingPipes;
|
||||||
|
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlantBase(int aID, String aName, String aNameRegional) {
|
||||||
|
super(aID, aName, aNameRegional);
|
||||||
|
//initFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
public GT_MetaTileEntity_OreDrillingPlantBase(String aName) {
|
||||||
|
super(aName);
|
||||||
|
initFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initFields() {
|
||||||
|
xDrill = getBaseMetaTileEntity().getXCoord();
|
||||||
|
yDrill = getBaseMetaTileEntity().getYCoord();
|
||||||
|
zDrill = getBaseMetaTileEntity().getZCoord();
|
||||||
|
back = ForgeDirection.getOrientation(getBaseMetaTileEntity().getBackFacing());
|
||||||
|
xCenter = xDrill + back.offsetX;
|
||||||
|
zCenter = zDrill + back.offsetZ;
|
||||||
|
isPickingPipes = false;
|
||||||
|
casingBlock = getCasingBlockItem().getBlock();
|
||||||
|
casingMeta = getCasingBlockItem().get(0).getItemDamage();
|
||||||
|
frameMeta = 4096 + getFrameMaterial().mMetaItemSubID;
|
||||||
|
casingTextureIndex = getCasingTextureIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
|
||||||
|
if (aSide == aFacing) {
|
||||||
|
return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[16], new GT_RenderedTexture(aActive ? Textures.BlockIcons.OVERLAY_FRONT_ADVMINER2_ACTIVE : Textures.BlockIcons.OVERLAY_FRONT_ADVMINER2)};
|
||||||
|
}
|
||||||
|
return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[16]};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
|
||||||
|
return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, getLocalName(), "OreDrillingPlant.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checkRecipe(ItemStack aStack) {
|
||||||
|
if (isPickingPipes) {
|
||||||
|
if (tryPickPipe()) {
|
||||||
|
mOutputItems = new ItemStack[] {GT_Utility.copyAmount(1, miningPipe)};
|
||||||
|
setElectricityStats();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
stopMachine();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
putMiningPipesFromInputsInController();
|
||||||
|
if (!tryConsumeDrillingFluid()) return false;
|
||||||
|
|
||||||
|
fillMineListIfEmpty();
|
||||||
|
if (oreBlockPositions.isEmpty()) {
|
||||||
|
boolean isMoved = moveOneDown();
|
||||||
|
if (!isMoved) {
|
||||||
|
isPickingPipes = true;
|
||||||
|
setElectricityStats();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ChunkPosition oreBlockPos = null;
|
||||||
|
Block oreBlock = null;
|
||||||
|
|
||||||
|
while ((oreBlock == null || oreBlock == Blocks.air) && !oreBlockPositions.isEmpty()) {
|
||||||
|
oreBlockPos = oreBlockPositions.remove(0);
|
||||||
|
oreBlock = getBaseMetaTileEntity().getBlock(oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oreBlock != null && oreBlock != Blocks.air) {
|
||||||
|
ArrayList<ItemStack> oreBlockDrops = getBlockDrops(oreBlock, oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ);
|
||||||
|
getBaseMetaTileEntity().getWorld().setBlockToAir(oreBlockPos.chunkPosX, oreBlockPos.chunkPosY, oreBlockPos.chunkPosZ);
|
||||||
|
mOutputItems = getOutputByDrops(oreBlockDrops);
|
||||||
|
}
|
||||||
|
|
||||||
|
setElectricityStats();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean tryPickPipe() {
|
||||||
|
if (yHead == yDrill) return false;
|
||||||
|
if (checkBlockAndMeta(xCenter, yHead + 1, zCenter, miningPipeBlock, W))
|
||||||
|
getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead + 1, zCenter, miningPipeTipBlock);
|
||||||
|
getBaseMetaTileEntity().getWorld().setBlockToAir(xCenter, yHead, zCenter);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setElectricityStats() {
|
||||||
|
this.mEfficiency = getCurrentEfficiency(null);
|
||||||
|
this.mEfficiencyIncrease = 10000;
|
||||||
|
//T1 = 12; T2 = 48; T3 = 192; T4 = 768
|
||||||
|
this.mEUt = 3 * (1 << (getMinTier() << 1));
|
||||||
|
//T1 = 960; T2 = 480; T3 = 240; T4 = 120
|
||||||
|
this.mMaxProgresstime = 1920 / (1 << getMinTier());
|
||||||
|
|
||||||
|
long voltage = getMaxInputVoltage();
|
||||||
|
long overclockEu = V[Math.max(1, GT_Utility.getTier(voltage)) - 1];
|
||||||
|
while (this.mEUt <= overclockEu) {
|
||||||
|
this.mEUt *= 4;
|
||||||
|
this.mMaxProgresstime /= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mEUt = -this.mEUt;
|
||||||
|
this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack[] getOutputByDrops(ArrayList<ItemStack> oreBlockDrops) {
|
||||||
|
long voltage = getMaxInputVoltage();
|
||||||
|
ArrayList<ItemStack> outputItems = new ArrayList<>();
|
||||||
|
while (!oreBlockDrops.isEmpty()) {
|
||||||
|
ItemStack currentItem = oreBlockDrops.remove(0).copy();
|
||||||
|
if (!doUseMaceratorRecipe(currentItem)) {
|
||||||
|
multiplyStackSize(currentItem);
|
||||||
|
outputItems.add(currentItem);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.findRecipe(getBaseMetaTileEntity(), false, voltage, null, currentItem);
|
||||||
|
if (tRecipe == null) {
|
||||||
|
outputItems.add(currentItem);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < tRecipe.mOutputs.length; i++) {
|
||||||
|
ItemStack recipeOutput = tRecipe.mOutputs[i].copy();
|
||||||
|
if (getBaseMetaTileEntity().getRandomNumber(10000) < tRecipe.getOutputChance(i))
|
||||||
|
multiplyStackSize(recipeOutput);
|
||||||
|
outputItems.add(recipeOutput);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return GT_Utility.listToArray(outputItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean doUseMaceratorRecipe(ItemStack currentItem) {
|
||||||
|
ItemData itemData = GT_OreDictUnificator.getItemData(currentItem);
|
||||||
|
return itemData == null
|
||||||
|
|| itemData.mPrefix != OrePrefixes.crushed
|
||||||
|
&& itemData.mPrefix != OrePrefixes.dustImpure
|
||||||
|
&& itemData.mPrefix != OrePrefixes.dust
|
||||||
|
&& itemData.mMaterial.mMaterial != Materials.Oilsands;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void multiplyStackSize(ItemStack itemStack) {
|
||||||
|
itemStack.stackSize *= getBaseMetaTileEntity().getRandomNumber(4) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<ItemStack> getBlockDrops(final Block oreBlock, int posX, int posY, int posZ) {
|
||||||
|
final int blockMeta = getBaseMetaTileEntity().getMetaID(posX, posY, posZ);
|
||||||
|
if (oreBlock.canSilkHarvest(getBaseMetaTileEntity().getWorld(), null, posX, posY, posZ, blockMeta)) {
|
||||||
|
return new ArrayList<ItemStack>() {{
|
||||||
|
add(new ItemStack(oreBlock, 1, blockMeta));
|
||||||
|
}};
|
||||||
|
} else {
|
||||||
|
return oreBlock.getDrops(getBaseMetaTileEntity().getWorld(), posX, posY, posZ, blockMeta, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean tryConsumeDrillingFluid() {
|
||||||
|
return depleteInput(new FluidStack(ItemList.sDrillingFluid, 2000));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void putMiningPipesFromInputsInController() {
|
||||||
|
int maxPipes = miningPipe.getMaxStackSize();
|
||||||
|
if (isHasMiningPipes(maxPipes)) return;
|
||||||
|
|
||||||
|
ItemStack pipes = getStackInSlot(1);
|
||||||
|
for (ItemStack storedItem : getStoredInputs()) {
|
||||||
|
if (!storedItem.isItemEqual(miningPipe)) continue;
|
||||||
|
|
||||||
|
if (pipes == null) {
|
||||||
|
setInventorySlotContents(1, GT_Utility.copy(miningPipe));
|
||||||
|
pipes = getStackInSlot(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pipes.stackSize == maxPipes) break;
|
||||||
|
|
||||||
|
int needPipes = maxPipes - pipes.stackSize;
|
||||||
|
int transferPipes = storedItem.stackSize < needPipes ? storedItem.stackSize : needPipes;
|
||||||
|
|
||||||
|
pipes.stackSize += transferPipes;
|
||||||
|
storedItem.stackSize -= transferPipes;
|
||||||
|
}
|
||||||
|
updateSlots();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillMineListIfEmpty() {
|
||||||
|
if (!oreBlockPositions.isEmpty()) return;
|
||||||
|
|
||||||
|
tryAddOreBlockToMineList(xCenter, yHead - 1, zCenter);
|
||||||
|
if (yHead == yDrill) return; //skip controller block layer
|
||||||
|
|
||||||
|
int radius = getRadiusInChunks() << 4;
|
||||||
|
for (int xOff = -radius; xOff <= radius; xOff++) {
|
||||||
|
for (int zOff = -radius; zOff <= radius; zOff++) {
|
||||||
|
tryAddOreBlockToMineList(xDrill + xOff, yHead, zDrill + zOff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tryAddOreBlockToMineList(int x, int y, int z) {
|
||||||
|
Block block = getBaseMetaTileEntity().getBlock(x, y, z);
|
||||||
|
int blockMeta = getBaseMetaTileEntity().getMetaID(x, y, z);
|
||||||
|
ChunkPosition blockPos = new ChunkPosition(x, y, z);
|
||||||
|
if (block instanceof GT_Block_Ores_Abstract) {
|
||||||
|
TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntity(x, y, z);
|
||||||
|
if (tTileEntity != null && tTileEntity instanceof GT_TileEntity_Ores && ((GT_TileEntity_Ores) tTileEntity).mNatural && !oreBlockPositions.contains(blockPos)) {
|
||||||
|
oreBlockPositions.add(blockPos);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ItemData association = GT_OreDictUnificator.getAssociation(new ItemStack(block, 1, blockMeta));
|
||||||
|
if (association != null && association.mPrefix.toString().startsWith("ore") && !oreBlockPositions.contains(blockPos)) {
|
||||||
|
oreBlockPositions.add(blockPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean moveOneDown() {
|
||||||
|
if (!isHasMiningPipes()) return false;
|
||||||
|
|
||||||
|
if (yHead <= 0) return false;
|
||||||
|
if (checkBlockAndMeta(xCenter, yHead - 1, zCenter, Blocks.bedrock, 0)) return false;
|
||||||
|
|
||||||
|
if (!getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead - 1, zCenter, miningPipeTipBlock)) return false;
|
||||||
|
if (yHead != yDrill) getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead, zCenter, miningPipeBlock);
|
||||||
|
|
||||||
|
getBaseMetaTileEntity().decrStackSize(1, 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isHasMiningPipes() {
|
||||||
|
return isHasMiningPipes(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isHasMiningPipes(int minCount) {
|
||||||
|
ItemStack pipe = getStackInSlot(1);
|
||||||
|
return pipe != null && pipe.stackSize > minCount - 1 && pipe.isItemEqual(miningPipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
|
||||||
|
//check base layer
|
||||||
|
for (int xOff = -1 + back.offsetX; xOff <= 1 + back.offsetX; xOff++) {
|
||||||
|
for (int zOff = -1 + back.offsetZ; zOff <= 1 + back.offsetZ; zOff++) {
|
||||||
|
if (xOff == 0 && zOff == 0) continue;
|
||||||
|
|
||||||
|
IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xOff, 0, zOff);
|
||||||
|
if (addMaintenanceToMachineList(tTileEntity, casingTextureIndex)
|
||||||
|
|| addInputToMachineList(tTileEntity, casingTextureIndex)
|
||||||
|
|| addOutputToMachineList(tTileEntity, casingTextureIndex)
|
||||||
|
|| addEnergyInputToMachineList(tTileEntity, casingTextureIndex))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!checkCasingBlock(xOff, 0, zOff)) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//check tower
|
||||||
|
for (int yOff = 1; yOff < 4; yOff++) {
|
||||||
|
if (!checkCasingBlock(back.offsetX, yOff, back.offsetZ)
|
||||||
|
|| !checkFrameBlock(back.offsetX + 1, yOff, back.offsetZ)
|
||||||
|
|| !checkFrameBlock(back.offsetX - 1, yOff, back.offsetZ)
|
||||||
|
|| !checkFrameBlock(back.offsetX, yOff, back.offsetZ + 1)
|
||||||
|
|| !checkFrameBlock(back.offsetX, yOff, back.offsetZ - 1)
|
||||||
|
|| !checkFrameBlock(back.offsetX, yOff + 3, back.offsetZ))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return checkPipesAndSetYHead();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkPipesAndSetYHead() {
|
||||||
|
yHead = yDrill - 1;
|
||||||
|
while (checkBlockAndMeta(xCenter, yHead, zCenter, miningPipeBlock, W)) yHead--;
|
||||||
|
if (checkBlockAndMeta(xCenter, yHead, zCenter, miningPipeTipBlock, W)) return true;
|
||||||
|
yHead++;
|
||||||
|
return yHead == yDrill || getBaseMetaTileEntity().getWorld().setBlock(xCenter, yHead, zCenter, miningPipeTipBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkCasingBlock(int xOff, int yOff, int zOff) {
|
||||||
|
return checkBlockAndMetaOffset(xOff, yOff, zOff, casingBlock, casingMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkFrameBlock(int xOff, int yOff, int zOff) {
|
||||||
|
return checkBlockAndMetaOffset(xOff, yOff, zOff, GregTech_API.sBlockMachines, frameMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkBlockAndMetaOffset(int xOff, int yOff, int zOff, Block block, int meta) {
|
||||||
|
return checkBlockAndMeta(xDrill + xOff, yDrill + yOff, zDrill + zOff, block, meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkBlockAndMeta(int x, int y, int z, Block block, int meta) {
|
||||||
|
return (meta == W || getBaseMetaTileEntity().getMetaID(x, y, z) == meta)
|
||||||
|
&& getBaseMetaTileEntity().getBlock(x, y, z) == block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCorrectMachinePart(ItemStack aStack) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxEfficiency(ItemStack aStack) {
|
||||||
|
return 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getPollutionPerTick(ItemStack aStack) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getDamageToComponent(ItemStack aStack) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean explodesOnComponentBreak(ItemStack aStack) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract ItemList getCasingBlockItem();
|
||||||
|
|
||||||
|
protected abstract Materials getFrameMaterial();
|
||||||
|
|
||||||
|
protected abstract int getCasingTextureIndex();
|
||||||
|
|
||||||
|
protected abstract int getRadiusInChunks();
|
||||||
|
|
||||||
|
protected abstract int getMinTier();
|
||||||
|
|
||||||
|
protected String[] getDescriptionInternal(String tierSuffix) {
|
||||||
|
String casings = getCasingBlockItem().get(0).getDisplayName();
|
||||||
|
return new String[]{
|
||||||
|
"Controller Block for the Ore Drilling Plant " + (tierSuffix != null ? tierSuffix : ""),
|
||||||
|
"Size(WxHxD): 3x7x3, Controller (Front middle bottom)",
|
||||||
|
"3x1x3 Base of " + casings,
|
||||||
|
"1x3x1 " + casings + " pillar (Center of base)",
|
||||||
|
"1x3x1 " + getFrameMaterial().mName + " Frame Boxes (Each pillar side and on top)",
|
||||||
|
"1x Input Hatch (Any bottom layer casing)",
|
||||||
|
"1x Output Bus (Any bottom layer casing)",
|
||||||
|
"1x Maintenance Hatch (Any bottom layer casing)",
|
||||||
|
"1x " + VN[getMinTier()] + "+ Energy Hatch (Any bottom layer casing)"};
|
||||||
|
}
|
||||||
|
}
|
|
@ -1345,6 +1345,7 @@ if(Loader.isModLoaded("Railcraft")){
|
||||||
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.TungstenSteel, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1L), ItemList.Casing_RobustTungstenSteel.get(2L, new Object[0]), 50, 16);
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.TungstenSteel, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1L), ItemList.Casing_RobustTungstenSteel.get(2L, new Object[0]), 50, 16);
|
||||||
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.StainlessSteel, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1L), ItemList.Casing_CleanStainlessSteel.get(2L, new Object[0]), 50, 16);
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.StainlessSteel, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1L), ItemList.Casing_CleanStainlessSteel.get(2L, new Object[0]), 50, 16);
|
||||||
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Titanium, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Titanium, 1L), ItemList.Casing_StableTitanium.get(2L, new Object[0]), 50, 16);
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Titanium, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Titanium, 1L), ItemList.Casing_StableTitanium.get(2L, new Object[0]), 50, 16);
|
||||||
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Osmiridium, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Osmiridium, 1L), ItemList.Casing_StableTitanium.get(2L, new Object[0]), 50, 16);
|
||||||
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.TungstenSteel, 6L), ItemList.Casing_LuV.get(1L, new Object[0]), ItemList.Casing_Fusion.get(1L, new Object[0]), 50, 16);
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.TungstenSteel, 6L), ItemList.Casing_LuV.get(1L, new Object[0]), ItemList.Casing_Fusion.get(1L, new Object[0]), 50, 16);
|
||||||
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Magnalium, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.BlueSteel, 1L), ItemList.Casing_Turbine.get(2L, new Object[0]), 50, 16);
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Magnalium, 6L), GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.BlueSteel, 1L), ItemList.Casing_Turbine.get(2L, new Object[0]), 50, 16);
|
||||||
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.StainlessSteel, 6L), ItemList.Casing_Turbine.get(1L, new Object[0]), ItemList.Casing_Turbine1.get(2L, new Object[0]), 50, 16);
|
GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.StainlessSteel, 6L), ItemList.Casing_Turbine.get(1L, new Object[0]), ItemList.Casing_Turbine1.get(2L, new Object[0]), 50, 16);
|
||||||
|
|
|
@ -58,6 +58,7 @@ public class GT_Loader_MetaTileEntities implements Runnable {
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.Casing_FrostProof.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Aluminium), 'F', OrePrefixes.frameGt.get(Materials.Aluminium)});
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_FrostProof.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Aluminium), 'F', OrePrefixes.frameGt.get(Materials.Aluminium)});
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.Casing_CleanStainlessSteel.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.StainlessSteel), 'F', OrePrefixes.frameGt.get(Materials.StainlessSteel)});
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_CleanStainlessSteel.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.StainlessSteel), 'F', OrePrefixes.frameGt.get(Materials.StainlessSteel)});
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.Casing_RobustTungstenSteel.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.TungstenSteel), 'F', OrePrefixes.frameGt.get(Materials.TungstenSteel)});
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_RobustTungstenSteel.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.TungstenSteel), 'F', OrePrefixes.frameGt.get(Materials.TungstenSteel)});
|
||||||
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_MiningOsmiridium.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Osmiridium), 'F', OrePrefixes.frameGt.get(Materials.Osmiridium)});
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.Casing_Turbine.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Magnalium), 'F', OrePrefixes.frameGt.get(Materials.BlueSteel)});
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_Turbine.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Magnalium), 'F', OrePrefixes.frameGt.get(Materials.BlueSteel)});
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.Casing_Turbine1.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.StainlessSteel), 'F', ItemList.Casing_Turbine});
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_Turbine1.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.StainlessSteel), 'F', ItemList.Casing_Turbine});
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.Casing_Turbine2.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Titanium), 'F', ItemList.Casing_Turbine});
|
GT_ModHandler.addCraftingRecipe(ItemList.Casing_Turbine2.get(2L, new Object[0]), bits, new Object[]{"PhP", "PFP", aTextPlateWrench, 'P', OrePrefixes.plate.get(Materials.Titanium), 'F', ItemList.Casing_Turbine});
|
||||||
|
@ -1209,8 +1210,17 @@ public class GT_Loader_MetaTileEntities implements Runnable {
|
||||||
ItemList.OilDrill.set(new GT_MetaTileEntity_OilDrill(1157, "multimachine.oildrill", "Oil Drilling Rig").getStackForm(1));
|
ItemList.OilDrill.set(new GT_MetaTileEntity_OilDrill(1157, "multimachine.oildrill", "Oil Drilling Rig").getStackForm(1));
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.OilDrill.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_MV, 'W', OrePrefixes.frameGt.get(Materials.Steel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Motor_MV});
|
GT_ModHandler.addCraftingRecipe(ItemList.OilDrill.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_MV, 'W', OrePrefixes.frameGt.get(Materials.Steel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Motor_MV});
|
||||||
|
|
||||||
ItemList.AdvancedMiner2.set(new GT_MetaTileEntity_AdvMiner2(1158, "multimachine.advminer2", "Advanced Miner II").getStackForm(1));
|
ItemList.OreDrill1.set(new GT_MetaTileEntity_OreDrillingPlant1(1158, "multimachine.oredrill1", "Ore Drilling Plant").getStackForm(1));
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.AdvancedMiner2.get(1L, new Object[0]), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_EV, 'W', OrePrefixes.frameGt.get(Materials.Titanium), 'E', OrePrefixes.circuit.get(Materials.Data), 'C', ItemList.Electric_Motor_EV});
|
GT_ModHandler.addCraftingRecipe(ItemList.OreDrill1.get(1L), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.Hull_EV, 'W', OrePrefixes.frameGt.get(Materials.Titanium), 'E', OrePrefixes.circuit.get(Materials.Data), 'C', ItemList.Electric_Motor_EV});
|
||||||
|
|
||||||
|
ItemList.OreDrill2.set(new GT_MetaTileEntity_OreDrillingPlant2(1177, "multimachine.oredrill2", "Ore Drilling Plant II").getStackForm(1));
|
||||||
|
GT_ModHandler.addCraftingRecipe(ItemList.OreDrill2.get(1L), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.OreDrill1, 'W', OrePrefixes.frameGt.get(Materials.TungstenSteel), 'E', OrePrefixes.circuit.get(Materials.Elite), 'C', ItemList.Electric_Motor_IV});
|
||||||
|
|
||||||
|
ItemList.OreDrill3.set(new GT_MetaTileEntity_OreDrillingPlant3(1178, "multimachine.oredrill3", "Ore Drilling Plant III").getStackForm(1));
|
||||||
|
GT_ModHandler.addCraftingRecipe(ItemList.OreDrill3.get(1L), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.OreDrill2, 'W', OrePrefixes.frameGt.get(Materials.Osmiridium), 'E', OrePrefixes.circuit.get(Materials.Master), 'C', ItemList.Electric_Motor_LuV});
|
||||||
|
|
||||||
|
ItemList.OreDrill4.set(new GT_MetaTileEntity_OreDrillingPlant4(1179, "multimachine.oredrill4", "Ore Drilling Plant IV").getStackForm(1));
|
||||||
|
GT_ModHandler.addCraftingRecipe(ItemList.OreDrill4.get(1L), bitsd, new Object[]{"WWW", "EME", "CCC", 'M', ItemList.OreDrill3, 'W', OrePrefixes.frameGt.get(Materials.Tritanium), 'E', OrePrefixes.circuit.get(Materials.Ultimate), 'C', ItemList.Electric_Motor_ZPM});
|
||||||
|
|
||||||
ItemList.PyrolyseOven.set(new GT_MetaTileEntity_PyrolyseOven(1159, "multimachine.pyro", "Pyrolyse Oven").getStackForm(1));
|
ItemList.PyrolyseOven.set(new GT_MetaTileEntity_PyrolyseOven(1159, "multimachine.pyro", "Pyrolyse Oven").getStackForm(1));
|
||||||
GT_ModHandler.addCraftingRecipe(ItemList.PyrolyseOven.get(1L, new Object[0]), bitsd, new Object[]{"WEP", "EME", "WCP", 'M', ItemList.Hull_MV, 'W', ItemList.Electric_Piston_MV, 'P', OrePrefixes.wireGt04.get(Materials.Cupronickel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Pump_MV});
|
GT_ModHandler.addCraftingRecipe(ItemList.PyrolyseOven.get(1L, new Object[0]), bitsd, new Object[]{"WEP", "EME", "WCP", 'M', ItemList.Hull_MV, 'W', ItemList.Electric_Piston_MV, 'P', OrePrefixes.wireGt04.get(Materials.Cupronickel), 'E', OrePrefixes.circuit.get(Materials.Good), 'C', ItemList.Electric_Pump_MV});
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Loading…
Reference in a new issue