aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2021-11-17 18:12:55 +0100
committerGitHub <noreply@github.com>2021-11-17 18:12:55 +0100
commit3cc1fcf988a51a84c8a0d22e1875c83843abf9a2 (patch)
tree0711d00f77270e5f381d679b5f8ab01ac79d5fc5 /src/Java/gtPlusPlus
parent47dba3df8d037bcfe3f072c21ca75432c35a2d40 (diff)
parent5393dd9d54fd7b7b10030473942d578cac118d46 (diff)
downloadGT5-Unofficial-3cc1fcf988a51a84c8a0d22e1875c83843abf9a2.tar.gz
GT5-Unofficial-3cc1fcf988a51a84c8a0d22e1875c83843abf9a2.tar.bz2
GT5-Unofficial-3cc1fcf988a51a84c8a0d22e1875c83843abf9a2.zip
Merge pull request #36 from GTNewHorizons/structurelib-interation
structurelib interation and disable some multis
Diffstat (limited to 'src/Java/gtPlusPlus')
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java4
-rw-r--r--src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java20
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java8
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java32
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java38
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_PowerSubStation.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java214
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaTieredCasingBlocks1.java1
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java350
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java359
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/turbine/LargeTurbineTextureHandler.java20
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java143
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GregtechMTE_TeslaTower.java22
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java233
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java340
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCentrifuge.java163
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java215
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java186
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java210
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialElectrolyzer.java190
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java214
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java229
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMixer.java189
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java178
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java151
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSifter.java237
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSinter.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialThermalCentrifuge.java188
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java164
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java250
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java188
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java218
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_AssemblyLine.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java309
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java281
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Fusion_MK4.java266
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java145
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamMacerator.java142
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java154
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_ThermalBoiler.java154
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java8
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FastNeutronReactor.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FrothFlotationCell.java244
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_LargeNaqReactor.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_NuclearReactor.java15
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java166
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityTreeFarm.java15
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java194
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java306
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java238
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeRocketEngine.java361
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeSemifluidGenerator.java219
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java218
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_SolarTower.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/GregtechMTE_AlgaePondBase.java259
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform1.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform2.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java782
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_SHSteam.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_Steam.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GregtechMetaTileEntity_LargerTurbineBase.java38
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_MultiTank.java35
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java386
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/TileEntitySolarHeater.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechBedrockPlatforms.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechFactoryGradeReplacementMultis.java6
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialElementDuplicator.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialFuelRefinery.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialGeneratorArray.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMultiTank.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialTreeFarm.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLFTR.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLargeTurbinesAndHeatExchanger.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNaqReactor.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSolarTower.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTeslaTower.java4
83 files changed, 4783 insertions, 5205 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java
index 94e7cbb664..7432c1905d 100644
--- a/src/Java/gtPlusPlus/GTplusplus.java
+++ b/src/Java/gtPlusPlus/GTplusplus.java
@@ -42,7 +42,6 @@ import gtPlusPlus.core.util.data.LocaleUtils;
import gtPlusPlus.core.util.minecraft.HazmatUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.core.util.sys.SystemUtils;
import gtPlusPlus.nei.NEI_IMC_Sender;
import gtPlusPlus.plugin.manager.Core_Manager;
import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
@@ -52,7 +51,6 @@ import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.ch
import gtPlusPlus.xmod.gregtech.loaders.GT_Material_Loader;
import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_BlastSmelterGT_GTNH;
import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_MultisUsingFluidInsteadOfCells;
-import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechMiniRaFusion;
import gtPlusPlus.xmod.thaumcraft.commands.CommandDumpAspects;
import net.minecraft.launchwrapper.Launch;
import net.minecraft.util.IIcon;
@@ -319,7 +317,7 @@ public class GTplusplus implements ActionListener {
RecipeGen_BlastSmelterGT_GTNH.generateGTNHBlastSmelterRecipesFromEBFList();
FishPondFakeRecipe.generateFishPondRecipes();
- GregtechMiniRaFusion.generateSlowFusionrecipes();
+ //GregtechMiniRaFusion.generateSlowFusionrecipes();
SemiFluidFuelHandler.generateFuels();
GregtechMTE_ChemicalPlant.generateRecipes();
diff --git a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
index bbc0e44d7e..e45abdaa36 100644
--- a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
+++ b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
@@ -93,7 +93,7 @@ public class COMPAT_HANDLER {
new RECIPES_Extruder();
GregtechGeneratorsULV.run();
GregtechEnergyBuffer.run();
- GregtechLFTR.run();
+ //GregtechLFTR.run();
GregtechSteamCondenser.run();
GregtechSafeBlock.run();
//GregtechSuperConductionPoint.run();
@@ -113,12 +113,12 @@ public class COMPAT_HANDLER {
GregtechAdvancedBoilers.run();
GregtechPollutionDevices.run();
GregtechTieredFluidTanks.run();
- GregtechIndustrialMultiTank.run();
+ //GregtechIndustrialMultiTank.run();
GregtechGeothermalThermalGenerator.run();
Gregtech4Content.run();
- GregtechIndustrialFuelRefinery.run();
+ //GregtechIndustrialFuelRefinery.run();
GregtechTreeFarmerTE.run();
- GregtechIndustrialTreeFarm.run();
+ //GregtechIndustrialTreeFarm.run();
GregtechIndustrialSifter.run();
GregtechSimpleWasher.run();
GregtechRTG.run();
@@ -131,15 +131,15 @@ public class COMPAT_HANDLER {
GregtechWirelessChargers.run();
GregtechIndustrialGeneratorArray.run();
GregtechIndustrialCuttingFactory.run();
- GregtechMiniRaFusion.run();
+ //GregtechMiniRaFusion.run();
GregtechComponentAssembler.run();
- GregtechTeslaTower.run();
+ //GregtechTeslaTower.run();
GregtechSuperChests.run();
GregtechIndustrialFishPond.run();
GregtechTieredChunkloaders.run();
GregtechIndustrialExtruder.run();
GregtechIndustrialMultiMachine.run();
- GregtechBedrockPlatforms.run();
+ //GregtechBedrockPlatforms.run();
GregtechBufferDynamos.run();
GregtechAmazonWarehouse.run();
GregtechFactoryGradeReplacementMultis.run();
@@ -147,9 +147,9 @@ public class COMPAT_HANDLER {
GregtechThreadedBuffers.run();
GregtechIndustrialMixer.run();
GregtechCustomHatches.run();
- GregtechNaqReactor.run();
+ //GregtechNaqReactor.run();
GregtechIndustrialArcFurnace.run();
- GregtechSolarTower.run();
+ //GregtechSolarTower.run();
GregtechLargeTurbinesAndHeatExchanger.run();
GregtechPowerBreakers.run();
GregtechFluidReactor.run();
@@ -157,7 +157,7 @@ public class COMPAT_HANDLER {
GregtechIndustrialAlloySmelter.run();
GregtechIsaMill.run();
GregtechSteamMultis.run();
- GregtechIndustrialElementDuplicator.run();
+ //GregtechIndustrialElementDuplicator.run();
//New Horizons Content
NewHorizonsAccelerator.run();
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
index f361fc8025..7410a507c4 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
@@ -511,7 +511,7 @@ public class RECIPES_GREGTECH {
(int) MaterialUtils.getVoltageForTier(6));
//Slow Fusion Controller
- CORE.RA.addAssemblylineRecipe(
+ /*CORE.RA.addAssemblylineRecipe(
GregtechItemList.COMET_Cyclotron.get(1),
20 * 60 * 30,
new ItemStack[] {
@@ -536,11 +536,11 @@ public class RECIPES_GREGTECH {
},
GregtechItemList.Miniature_Fusion.get(1),
20 * 60 * 5 * (GTNH ? 2 : 1),
- (int) MaterialUtils.getVoltageForTier(7));
+ (int) MaterialUtils.getVoltageForTier(7));*/
//Plasma Tank
- CORE.RA.addAssemblylineRecipe(
+ /*CORE.RA.addAssemblylineRecipe(
ItemUtils.getOrePrefixStack(OrePrefixes.pipeMedium, Materials.Superconductor, 1),
20 * 60 * 5,
new ItemStack[] {
@@ -559,7 +559,7 @@ public class RECIPES_GREGTECH {
},
GregtechItemList.Plasma_Tank.get(1),
20 * 60 * 1 * (GTNH ? 2 : 1),
- (int) MaterialUtils.getVoltageForTier(5));
+ (int) MaterialUtils.getVoltageForTier(5));*/
// Turbine Automation Port
CORE.RA.addAssemblylineRecipe(
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
index 0b0bf56a1c..e9c23f9f7d 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
@@ -95,7 +95,7 @@ public class RECIPES_Machines {
public static ItemStack RECIPE_ThermalBoilerCasing;
//Thorium Reactor
- public static ItemStack RECIPE_LFTRController;
+ /*public static ItemStack RECIPE_LFTRController;*/
public static ItemStack RECIPE_LFTROuterCasing;
public static ItemStack RECIPE_LFTRInnerCasing;
@@ -975,7 +975,7 @@ public class RECIPES_Machines {
if (CORE.ConfigSwitches.enableMultiblock_MultiTank){
//Industrial Multi Tank
- RECIPE_IndustrialMultiTankController = GregtechItemList.Industrial_MultiTank.get(1);
+ //RECIPE_IndustrialMultiTankController = GregtechItemList.Industrial_MultiTank.get(1);
RECIPE_IndustrialMultiTankFrame = GregtechItemList.Casing_MultitankExterior.get(Casing_Amount);
//Industrial Multi Tank Casing
@@ -1116,22 +1116,22 @@ public class RECIPES_Machines {
if (CORE.ConfigSwitches.enableMultiblock_TreeFarmer){
//Industrial Tree Farmer
- RECIPE_TreeFarmController = GregtechItemList.Industrial_TreeFarm.get(1);
+ /*RECIPE_TreeFarmController = GregtechItemList.Industrial_TreeFarm.get(1);*/
RECIPE_TreeFarmFrame = GregtechItemList.Casing_PLACEHOLDER_TreeFarmer.get(Casing_Amount);
//Industrial Tree Farm Controller
if (!GTNH) {
- RecipeUtils.addShapedGregtechRecipe(
+ /*RecipeUtils.addShapedGregtechRecipe(
"plateEglinSteel", "rotorEglinSteel", "plateEglinSteel",
"cableGt02Steel", "pipeMediumSteel", "cableGt02Steel",
"plateEglinSteel", CI.machineCasing_MV, "plateEglinSteel",
- RECIPE_TreeFarmController);
+ RECIPE_TreeFarmController);*/
}
else {
- RecipeUtils.addShapedGregtechRecipe(
+ /*RecipeUtils.addShapedGregtechRecipe(
"plateEglinSteel", "rotorEglinSteel", "plateEglinSteel",
"cableGt02Silver", "pipeMediumStainlessSteel", "cableGt02Silver",
"plateEglinSteel", CI.machineCasing_HV, "plateEglinSteel",
- RECIPE_TreeFarmController);
+ RECIPE_TreeFarmController);*/
}
//Industrial Tree Farm Frame
RecipeUtils.addShapedGregtechRecipe(
@@ -1374,23 +1374,23 @@ public class RECIPES_Machines {
if (CORE.ConfigSwitches.enableMultiblock_LiquidFluorideThoriumReactor){
//Thorium Reactor
- RECIPE_LFTRController = GregtechItemList.ThoriumReactor.get(1);
+ /*RECIPE_LFTRController = GregtechItemList.ThoriumReactor.get(1);*/
RECIPE_LFTRInnerCasing = GregtechItemList.Casing_Reactor_II.get(1); //Zeron
RECIPE_LFTROuterCasing = GregtechItemList.Casing_Reactor_I.get(1); //Hastelloy
ItemStack controlCircuit = ItemUtils.getSimpleStack(ModItems.itemCircuitLFTR);
if(!GTNH) {
- RecipeUtils.addShapedGregtechRecipe(
+ /*RecipeUtils.addShapedGregtechRecipe(
controlCircuit, "cableGt12NaquadahAlloy", controlCircuit,
"plateDoubleHastelloyN", GregtechItemList.Gregtech_Computer_Cube.get(1), "plateDoubleHastelloyN",
"plateThorium232", CI.machineHull_UV, "plateThorium232",
- RECIPE_LFTRController);
+ RECIPE_LFTRController);*/
} else {
- RecipeUtils.addShapedGregtechRecipe(
+ /*RecipeUtils.addShapedGregtechRecipe(
controlCircuit, "cableGt12NaquadahAlloy", controlCircuit,
"plateDoubleHastelloyN", GregtechItemList.Gregtech_Computer_Cube.get(1), "plateDoubleHastelloyN",
"plateThorium232", CI.machineHull_LuV, "plateThorium232",
- RECIPE_LFTRController);
+ RECIPE_LFTRController);*/
}
RecipeUtils.addShapedGregtechRecipe(
"plateDoubleZeron100", CI.craftingToolScrewdriver, "plateDoubleZeron100",
@@ -1411,11 +1411,11 @@ public class RECIPES_Machines {
//Fission Fuel Plant
- RecipeUtils.addShapedGregtechRecipe(
+ /*RecipeUtils.addShapedGregtechRecipe(
CI.getTieredCircuit(5), CI.craftingToolSolderingIron, CI.getTieredCircuit(5),
"plateDenseTungstenSteel", GregtechItemList.Gregtech_Computer_Cube.get(1), "plateDenseTungstenSteel",
"gearGtStellite", CI.machineHull_LuV, "gearGtStellite",
- GregtechItemList.Industrial_FuelRefinery.get(1));
+ GregtechItemList.Industrial_FuelRefinery.get(1));*/
ItemStack mInnerTank;
@@ -1875,7 +1875,7 @@ public class RECIPES_Machines {
ItemStack aDrillController = ItemUtils.getValueOfItemList("OreDrill4", ItemList.Hull_UV).get(1);
//Drilling Platform
- CORE.RA.addSixSlotAssemblingRecipe(
+ /*CORE.RA.addSixSlotAssemblingRecipe(
new ItemStack[] {
aDrillController,
ItemUtils.getItemStackOfAmountFromOreDict("frameGtTriniumNaquadahCarbonite", 3),
@@ -1886,7 +1886,7 @@ public class RECIPES_Machines {
ALLOY.LAFIUM.getFluid(144 * 8 * (GTNH ? 2 : 1)),
GregtechItemList.BedrockMiner_MKI.get(1),
(int) GT_Values.V[5],
- (int) GT_Values.V[7]);
+ (int) GT_Values.V[7]);*/
//Drilling Platform Casings
CORE.RA.addSixSlotAssemblingRecipe(
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index 9e62d05df2..8c780c6730 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -227,18 +227,18 @@ public enum GregtechItemList implements GregtechItemContainer {
//LFTR
- ThoriumReactor,
+ /*ThoriumReactor,*/
Casing_Reactor_I,
Casing_Reactor_II,
//Multitank
- Industrial_MultiTank,
+ /*Industrial_MultiTank,*/
Industrial_MultiTankDense,
Casing_MultitankExterior,
//Fission Fuel Refinery
- Industrial_FuelRefinery,
+ /*Industrial_FuelRefinery,*/
Casing_Refinery_External,
Casing_Refinery_Structural,
Casing_Refinery_Internal,
@@ -266,7 +266,7 @@ public enum GregtechItemList implements GregtechItemContainer {
//Tree Farm
- Industrial_TreeFarm,
+ /*Industrial_TreeFarm, */
TreeFarmer_Structural,
Casing_PLACEHOLDER_TreeFarmer,
@@ -292,7 +292,7 @@ public enum GregtechItemList implements GregtechItemContainer {
//Generator Array
- Generator_Array_Controller,
+ Generator_Array_Controller,
//Cutting Factory Controller
@@ -301,7 +301,7 @@ public enum GregtechItemList implements GregtechItemContainer {
//Tesla Tower
- TelsaTower,
+ /*TelsaTower,*/
Casing_TeslaTower,
@@ -316,9 +316,9 @@ public enum GregtechItemList implements GregtechItemContainer {
//Bedrock Mining Platforms
- BedrockMiner_MKI,
- BedrockMiner_MKII,
- BedrockMiner_MKIII,
+ /*BedrockMiner_MKI, */
+ /*BedrockMiner_MKII, */
+ /*BedrockMiner_MKIII, */
Casing_BedrockMiner,
@@ -334,7 +334,7 @@ public enum GregtechItemList implements GregtechItemContainer {
Machine_Adv_DistillationTower,
//Advanced Assembly Line
- Machine_Adv_AssemblyLine,
+ /*Machine_Adv_AssemblyLine,*/
//Advanced Vacuum Freezer
Industrial_Cryogenic_Freezer,
@@ -355,7 +355,7 @@ public enum GregtechItemList implements GregtechItemContainer {
Casing_Naq_Reactor_A,
Casing_Naq_Reactor_B,
Casing_Naq_Reactor_C,
- Controller_Naq_Reactor,
+ /*Controller_Naq_Reactor, */
Casing_Containment,
//Arc Furnace
@@ -363,13 +363,13 @@ public enum GregtechItemList implements GregtechItemContainer {
Casing_Industrial_Arc_Furnace,
//Solar Tower
- Industrial_Solar_Tower,
+ /*Industrial_Solar_Tower,*/
Casing_SolarTower_Structural,
Casing_SolarTower_SaltContainment,
Casing_SolarTower_HeatContainment,
//Larger Turbines
- Large_Steam_Turbine, Large_HPSteam_Turbine,
+ /*Large_Steam_Turbine, Large_HPSteam_Turbine, */
Casing_Turbine_Shaft,
Casing_Turbine_LP, Casing_Turbine_HP,
Casing_Turbine_Gas, Casing_Turbine_Plasma,
@@ -398,7 +398,7 @@ public enum GregtechItemList implements GregtechItemContainer {
Controller_Flotation_Cell,
// Elemental Duplicator
- Controller_ElementalDuplicator,
+ /*Controller_ElementalDuplicator,*/
Casing_ElementalDuplicator,
// Big Steam Macerator
@@ -427,7 +427,7 @@ public enum GregtechItemList implements GregtechItemContainer {
Hatch_Air_Intake,
//XL Turbine Rotor Hatch
- Hatch_Turbine_Rotor,
+ /*Hatch_Turbine_Rotor,*/
//Standard Turbine Rotor Hatch
Hatch_Input_TurbineHousing,
@@ -452,7 +452,7 @@ public enum GregtechItemList implements GregtechItemContainer {
Hatch_Output_Bus_Steam,
//Elemental Duplicator Data Orb Bus
- Hatch_Input_Elemental_Duplicator,
+ /*Hatch_Input_Elemental_Duplicator,*/
//RTG Hatch
Hatch_RTG_LV,
@@ -556,7 +556,7 @@ public enum GregtechItemList implements GregtechItemContainer {
SimpleDustWasher_UV,
//Solar Tower Reflector
- Solar_Tower_Reflector,
+ /*Solar_Tower_Reflector,*/
//Super Tier Chests
Super_Chest_LV, Super_Chest_MV, Super_Chest_HV, Super_Chest_EV, Super_Chest_IV,
@@ -572,7 +572,7 @@ public enum GregtechItemList implements GregtechItemContainer {
//Tiny Fusion
- Miniature_Fusion,
+ /*Miniature_Fusion, */
//Component Makers
@@ -696,7 +696,7 @@ public enum GregtechItemList implements GregtechItemContainer {
RTG,
//Plasma Tank
- Plasma_Tank,
+ /*Plasma_Tank,*/
//----------------------------------------------------------------------------
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_PowerSubStation.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_PowerSubStation.java
index bc7625805f..937513751b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_PowerSubStation.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_PowerSubStation.java
@@ -32,7 +32,7 @@ public class CONTAINER_PowerSubStation extends GT_Container_MultiMachine {
}
public int getSlotCount() {
- return 2;
+ return 10;
}
public int getShiftClickSlotCount() {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java
index e7776fca46..0a8624354b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_TreeFarmer.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.api.gui;
import java.util.List;
@@ -67,4 +68,4 @@ public class CONTAINER_TreeFarmer extends GT_ContainerMetaTile_Machine {
}
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java
index d00a30673f..762dcbf640 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_TreeFarmer.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.api.gui;
@@ -43,3 +44,4 @@ public class GUI_TreeFarmer extends GT_GUIContainerMetaTile_Machine {
this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java
index bead570558..a9cd179214 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations;
import gregtech.api.GregTech_API;
@@ -312,4 +313,4 @@ public class GT_MetaTileEntity_Hatch_Turbine extends GT_MetaTileEntity_Hatch {
-} \ No newline at end of file
+}*/
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 e4a6907335..3878583b60 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
@@ -1,5 +1,7 @@
package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base;
+import com.gtnewhorizon.structurelib.StructureLibAPI;
+import com.gtnewhorizon.structurelib.structure.IStructureElement;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
@@ -55,10 +57,13 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.TimeUnit;
+import java.util.function.BiConsumer;
+import java.util.function.BiPredicate;
+import java.util.function.Function;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
-public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_MultiBlockBase {
+public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_EnhancedMultiBlockBase<T>> extends GT_MetaTileEntity_EnhancedMultiBlockBase<T> {
public static final boolean DEBUG_DISABLE_CORES_TEMPORARILY = true;
@@ -302,108 +307,6 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
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) {
- boolean uuuu = false;
- for (String s : aCachedToolTip) {
- if (s.toLowerCase().contains(".")) {
- uuuu = true;
- break;
- }
- }
- if (!uuuu) {
- return aCachedToolTip;
- }
- else {
- aCachedToolTip = null;
- }
- }*/
-
- String aRequiresMuffler = "1x Muffler Hatch";
- //String aRequiresCoreModule = "1x Core Module";
- String aRequiresMaint = "1x Maintenance Hatch";
-
- String[] x = getTooltip();
-
- //Filter List, toggle switches, rebuild map without flags
- boolean showHatches = true;
- boolean showMachineType = true;
- boolean showMaint = true;
- boolean showPollution = getPollutionPerTick(null) > 0;
- AutoMap<String> aTempMap = new AutoMap<String>();
- for (int ee = 0; ee < x.length; ee++) {
- String hh = x[ee];
- if (hh.equals(TAG_HIDE_HATCHES)) {
- showHatches = false;
- }
- else if (hh.equals(TAG_HIDE_POLLUTION)) {
- showPollution = false;
- }
- else if (hh.equals(TAG_HIDE_MACHINE_TYPE)) {
- showMachineType = false;
- }
- else if (hh.equals(TAG_HIDE_MAINT)) {
- showMaint = false;
- }
- else {
- aTempMap.put(x[ee]);
- }
- }
- //Rebuild
- x = new String[aTempMap.size()];
- 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) {
- //aOrderedMap.put(aRequiresCoreModule);
- if (showPollution) {
- aOrderedMap.put(aRequiresMuffler);
- }
- if (showMaint) {
- aOrderedMap.put(aRequiresMaint);
- }
- }
-
- if (showMachineType) {
- aOrderedMap.put(getMachineTooltip());
- }
-
- if (showPollution) {
- aOrderedMap.put(getPollutionTooltip());
- }
-
-
-
-
-
- //Add Stock Tooltip to bottom of list
- String[] z;
- z = new String[aOrderedMap.size()];
- for (int ee = 0; ee < z.length; ee++) {
- z[ee] = aOrderedMap.get(ee);
- }
-
- int a2, a3;
- a2 = x != null ? x.length : 0;
- a3 = z != null ? z.length : 0;
- String[] aToolTip = new String[(a2 + a3)];
- aToolTip = ArrayUtils.addAll(aToolTip, x);
- aToolTip = ArrayUtils.addAll(aToolTip, z);
-
- //Valid Cached Tooltip during Run-Time
- if (aCachedToolTip == null || aCachedToolTip.length <= 0 || aCachedToolTip.length != aToolTip.length || this.mTotalRunTime % 100 == 0) {
- aCachedToolTip = aToolTip;
- }
- return aCachedToolTip;
- }
-
- public abstract String[] getTooltip();
-
public synchronized final MultiblockRequirements getRequirements() {
return mRequirements;
}
@@ -813,6 +716,25 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
return checkRecipeGeneric(tItemInputs, tFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll);
}
+ public boolean checkRecipeGeneric(GT_Recipe aRecipe,
+ int aMaxParallelRecipes, int aEUPercent,
+ int aSpeedBonusPercent, int aOutputChanceRoll, boolean isPerfectOC) {
+ if (aRecipe == null) {
+ return false;
+ }
+ ArrayList<ItemStack> tItems = getStoredInputs();
+ ArrayList<FluidStack> tFluids = getStoredFluids();
+ ItemStack[] tItemInputs = tItems.toArray(new ItemStack[tItems.size()]);
+ FluidStack[] tFluidInputs = tFluids.toArray(new FluidStack[tFluids.size()]);
+ return checkRecipeGeneric(tItemInputs, tFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, aRecipe, isPerfectOC);
+ }
+
+ public boolean checkRecipeGeneric(
+ ItemStack[] aItemInputs, FluidStack[] aFluidInputs,
+ int aMaxParallelRecipes, int aEUPercent,
+ int aSpeedBonusPercent, int aOutputChanceRoll) {
+ return checkRecipeGeneric(aItemInputs, aFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, null, false);
+ }
public boolean checkRecipeGeneric(GT_Recipe aRecipe,
int aMaxParallelRecipes, int aEUPercent,
@@ -824,14 +746,14 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
ArrayList<FluidStack> tFluids = getStoredFluids();
ItemStack[] tItemInputs = tItems.toArray(new ItemStack[tItems.size()]);
FluidStack[] tFluidInputs = tFluids.toArray(new FluidStack[tFluids.size()]);
- return checkRecipeGeneric(tItemInputs, tFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, aRecipe);
+ return checkRecipeGeneric(tItemInputs, tFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, aRecipe, false);
}
public boolean checkRecipeGeneric(
ItemStack[] aItemInputs, FluidStack[] aFluidInputs,
int aMaxParallelRecipes, int aEUPercent,
- int aSpeedBonusPercent, int aOutputChanceRoll) {
- return checkRecipeGeneric(aItemInputs, aFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, null);
+ int aSpeedBonusPercent, int aOutputChanceRoll, boolean isPerfectOC) {
+ return checkRecipeGeneric(aItemInputs, aFluidInputs, aMaxParallelRecipes, aEUPercent, aSpeedBonusPercent, aOutputChanceRoll, null, isPerfectOC);
}
@@ -985,7 +907,7 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
public boolean checkRecipeGeneric(
ItemStack[] aItemInputs, FluidStack[] aFluidInputs,
int aMaxParallelRecipes, int aEUPercent,
- int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe) {
+ int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe, boolean isPerpectOC) {
// Based on the Processing Array. A bit overkill, but very flexible.
// Reset outputs and progress stats
@@ -1110,7 +1032,8 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
} else {
while (this.mEUt <= gregtech.api.enums.GT_Values.V[(tTier - 1)]) {
this.mEUt *= 4;
- this.mMaxProgresstime /= 2;
+ if (isPerpectOC) this.mMaxProgresstime /= 4;
+ else this.mMaxProgresstime /= 2;
}
}
@@ -1727,6 +1650,9 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
this.mScrewdriver = true;
}
+ public boolean checkHatch() {
+ return mMaintenanceHatches.size() <= 1 && !mMufflerHatches.isEmpty();
+ }
public <E> boolean addToMachineListInternal(ArrayList<E> aList, final IMetaTileEntity aTileEntity,
final int aBaseCasingIndex) {
@@ -2237,15 +2163,6 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
return 0;
}
- public String getPollutionTooltip() {
- if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
- return "Causes " + 20 * this.getPollutionPerTick(null) + " Pollution per second";
- }
- else {
- return "";
- }
- }
-
private static Method calculatePollutionReduction = null;
public int calculatePollutionReductionForHatch(GT_MetaTileEntity_Hatch_Muffler i , int g) {
if (calculatePollutionReduction != null) {
@@ -2499,15 +2416,6 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
return true;
}
- public final boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- boolean aStructureCheck = checkMultiblock(aBaseMetaTileEntity, aStack);
- boolean aHasCore = DEBUG_DISABLE_CORES_TEMPORARILY; //(requireControlCores ? (this.getControlCoreBus() != null) : true);
- return aStructureCheck && aHasCore;
- }
-
- 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;
@@ -2627,7 +2535,61 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
}*/
}
+ //Only support to use meta to tier
+ public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiConsumer<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int maxMeta) {
+ return addTieredBlock(aBlock, (t, i) -> {
+ aSetTheFuckingMeta.accept(t, i);
+ return true;
+ }, aGetTheFuckingMeta, 0, maxMeta
+ );
+ }
+
+ public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiConsumer<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int minMeta, int maxMeta) {
+ return addTieredBlock(aBlock, (t, i) -> {
+ aSetTheFuckingMeta.accept(t, i);
+ return true;
+ }, aGetTheFuckingMeta, minMeta, maxMeta
+ );
+ }
+
+ public static <T> IStructureElement<T> addTieredBlock(Block aBlock, BiPredicate<T, Integer> aSetTheFuckingMeta, Function<T, Integer> aGetTheFuckingMeta, int minMeta, int maxMeta) {
+
+ return new IStructureElement<T>() {
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ Block tBlock = world.getBlock(x, y, z);
+ if (aBlock == tBlock) {
+ Integer currentMeta = aGetTheFuckingMeta.apply(t);
+ int newMeta = tBlock.getDamageValue(world, x, y, z) + 1;
+ if (newMeta > maxMeta || newMeta < minMeta + 1) return false;
+ if (currentMeta == 0) {
+ return aSetTheFuckingMeta.test(t, newMeta);
+ } else {
+ return currentMeta == newMeta;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ StructureLibAPI.hintParticle(world, x, y, z, aBlock, getMeta(trigger));
+ return true;
+ }
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ return world.setBlock(x, y, z, aBlock, getMeta(trigger), 3);
+ }
+ private int getMeta(ItemStack trigger) {
+ int meta = trigger.stackSize;
+ if (meta <= 0) meta = minMeta;
+ if (meta + minMeta >= maxMeta) meta = maxMeta - 1 - minMeta;
+ return meta + minMeta;
+ }
+ };
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
index a357bd9103..419b5f3d30 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
@@ -13,7 +13,6 @@ import gregtech.common.blocks.GT_Material_Casings;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import gtPlusPlus.xmod.gregtech.common.blocks.textures.turbine.LargeTurbineTextureHandler;
public class GregtechMetaCasingBlocks4
@@ -51,14 +50,14 @@ extends GregtechMetaCasingBlocksAbstract {
GregtechItemList.Casing_RocketEngine.set(new ItemStack(this, 1, 11));
}
- private static final LargeTurbineTextureHandler mTurbineTextures = new LargeTurbineTextureHandler();
+ //private static final LargeTurbineTextureHandler mTurbineTextures = new LargeTurbineTextureHandler();
- @Override
+ /*@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(final IBlockAccess aWorld, final int xCoord, final int yCoord, final int zCoord, final int aSide) {
final GregtechMetaCasingBlocks4 i = this;
return mTurbineTextures.handleCasingsGT(aWorld, xCoord, yCoord, zCoord, aSide, i);
- }
+ }*/
@Override
public IIcon getIcon(final int aSide, final int aMeta) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaTieredCasingBlocks1.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaTieredCasingBlocks1.java
index 240af72a3b..cbd585e50d 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaTieredCasingBlocks1.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaTieredCasingBlocks1.java
@@ -21,7 +21,6 @@ import gregtech.common.blocks.GT_Material_Casings;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.CasingTextureHandler;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import gtPlusPlus.xmod.gregtech.common.blocks.textures.turbine.LargeTurbineTextureHandler;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.storage.GregtechMetaTileEntity_PowerSubStationController;
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 4fde2d6916..6326dd2c29 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesCentrifugeMultiblock.java
@@ -78,316 +78,60 @@ public class TexturesCentrifugeMultiblock {
return this.handleCasingsGT58(aWorld, xCoord, yCoord, zCoord, aSide, thisBlock);
}
+ private static int isCentrifugeControllerWithSide(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) {
+ TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+ if (!(tTileEntity instanceof IGregTechTileEntity)) return 0;
+ IGregTechTileEntity tTile = (IGregTechTileEntity) tTileEntity;
+ if (tTile.getMetaTileEntity() instanceof GregtechMetaTileEntity_IndustrialCentrifuge && tTile.getFrontFacing() == aSide)
+ return tTile.isActive() ? 1 : 2;
+ return 0;
+ }
public IIcon handleCasingsGT58(final IBlockAccess aWorld, final int xCoord, final int yCoord, final int zCoord, final int aSide, final GregtechMetaCasingBlocks thisBlock) {
final int tMeta = aWorld.getBlockMetadata(xCoord, yCoord, zCoord);
if (tMeta != 0) {
return CasingTextureHandler.getIcon(aSide, tMeta);
}
- final int tStartIndex = tMeta == 6 ? 1 : 13;
- if (tMeta == 0) {
- if ((aSide == 2) || (aSide == 3)) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- 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))) {
- return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 2);
- }
- }
- return TexturesGtBlock.Casing_Material_Centrifuge.getIcon();
- }
- final boolean[] tConnectedSides = {(aWorld.getBlock(xCoord, yCoord - 1, zCoord) == thisBlock) && (aWorld.getBlockMetadata(xCoord, yCoord - 1, zCoord) == tMeta), (aWorld.getBlock(xCoord, yCoord + 1, zCoord) == thisBlock) && (aWorld.getBlockMetadata(xCoord, yCoord + 1, zCoord) == tMeta), (aWorld.getBlock(xCoord + 1, yCoord, zCoord) == thisBlock) && (aWorld.getBlockMetadata(xCoord + 1, yCoord, zCoord) == tMeta), (aWorld.getBlock(xCoord, yCoord, zCoord + 1) == thisBlock) && (aWorld.getBlockMetadata(xCoord, yCoord, zCoord + 1) == tMeta), (aWorld.getBlock(xCoord - 1, yCoord, zCoord) == thisBlock) && (aWorld.getBlockMetadata(xCoord - 1, yCoord, zCoord) == tMeta), (aWorld.getBlock(xCoord, yCoord, zCoord - 1) == thisBlock) && (aWorld.getBlockMetadata(xCoord, yCoord, zCoord - 1) == tMeta)};
- switch (aSide) {
- case 0:
- if (tConnectedSides[0]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[2])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[5]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 1:
- if (tConnectedSides[1]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[4])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[3]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 2:
- if (tConnectedSides[5]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[4])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 3:
- if (tConnectedSides[3]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[4])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 4:
- if (tConnectedSides[4]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- if ((!tConnectedSides[3]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- case 5:
- if (tConnectedSides[2]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- if ((!tConnectedSides[3]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- break;
+ int tInvertLeftRightMod = aSide % 2 * 2 - 1;
+ switch (aSide / 2) {
+ case 0:
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ if (i == 0 && j == 0)
+ continue;
+ if (isCentrifugeControllerWithSide(aWorld, xCoord + j, yCoord, zCoord + i, aSide) != 0) {
+ IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld.getTileEntity(xCoord + j, yCoord, zCoord + i)).getMetaTileEntity();
+ return getIconByIndex(tMetaTileEntity, 4 - i * 3 - j);
+ }
+ }
+ }
+ break;
+ case 1:
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ if (i == 0 && j == 0)
+ continue;
+ if (isCentrifugeControllerWithSide(aWorld, xCoord + j, yCoord + i, zCoord, aSide) != 0) {
+ IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld.getTileEntity(xCoord + j, yCoord + i, zCoord)).getMetaTileEntity();
+ return getIconByIndex(tMetaTileEntity, 4 + i * 3 - j * tInvertLeftRightMod);
+ }
+ }
+ }
+ break;
+ case 2:
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ if (i == 0 && j == 0)
+ continue;
+ if (isCentrifugeControllerWithSide(aWorld, xCoord, yCoord + i, zCoord + j, aSide) != 0) {
+ IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld.getTileEntity(xCoord, yCoord + i, zCoord + j)).getMetaTileEntity();
+ return getIconByIndex(tMetaTileEntity, 4 + i * 3 + j * tInvertLeftRightMod);
+ }
+ }
+ }
+ break;
}
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
+ return TexturesGtBlock.Casing_Material_Centrifuge.getIcon();
}
public boolean isCentrifugeRunning(IMetaTileEntity aTile) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
index 02900c300b..962f981d3b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
@@ -74,315 +74,60 @@ public class TexturesGrinderMultiblock {
frontFaceActive_8
};
- public IIcon handleCasingsGT(final IBlockAccess aWorld, final int xCoord, final int yCoord, final int zCoord, final int aSide, final GregtechMetaCasingBlocks5 i) {
+ private static int isIsaControllerWithSide(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) {
+ TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+ if (!(tTileEntity instanceof IGregTechTileEntity)) return 0;
+ IGregTechTileEntity tTile = (IGregTechTileEntity) tTileEntity;
+ if (tTile.getMetaTileEntity() instanceof GregtechMetaTileEntity_IsaMill && tTile.getFrontFacing() == aSide)
+ return tTile.isActive() ? 1 : 2;
+ return 0;
+ }
+
+ public IIcon handleCasingsGT(final IBlockAccess aWorld, final int xCoord, final int yCoord, final int zCoord, final int aSide, final GregtechMetaCasingBlocks5 ii) {
final int tMeta = aWorld.getBlockMetadata(xCoord, yCoord, zCoord);
if (tMeta != 0) {
return GregtechMetaCasingBlocks5.getStaticIcon(aSide, tMeta);
}
- final int tStartIndex = tMeta == 6 ? 1 : 13;
- if (tMeta == 0) {
- if ((aSide == 2) || (aSide == 3)) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- 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_IsaMill))) {
- return getIconByIndex((IMetaTileEntity) tMetaTileEntity, 2);
- }
- }
- return TexturesGtBlock.TEXTURE_CASING_GRINDING_MILL.getIcon();
- }
- final boolean[] tConnectedSides = {(aWorld.getBlock(xCoord, yCoord - 1, zCoord) == i) && (aWorld.getBlockMetadata(xCoord, yCoord - 1, zCoord) == tMeta), (aWorld.getBlock(xCoord, yCoord + 1, zCoord) == i) && (aWorld.getBlockMetadata(xCoord, yCoord + 1, zCoord) == tMeta), (aWorld.getBlock(xCoord + 1, yCoord, zCoord) == i) && (aWorld.getBlockMetadata(xCoord + 1, yCoord, zCoord) == tMeta), (aWorld.getBlock(xCoord, yCoord, zCoord + 1) == i) && (aWorld.getBlockMetadata(xCoord, yCoord, zCoord + 1) == tMeta), (aWorld.getBlock(xCoord - 1, yCoord, zCoord) == i) && (aWorld.getBlockMetadata(xCoord - 1, yCoord, zCoord) == tMeta), (aWorld.getBlock(xCoord, yCoord, zCoord - 1) == i) && (aWorld.getBlockMetadata(xCoord, yCoord, zCoord - 1) == tMeta)};
- switch (aSide) {
- case 0:
- if (tConnectedSides[0]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[2])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[5]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 1:
- if (tConnectedSides[1]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((tConnectedSides[4]) && (tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((!tConnectedSides[4]) && (tConnectedSides[5]) && (tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((!tConnectedSides[4]) && (!tConnectedSides[5]) && (!tConnectedSides[2]) && (!tConnectedSides[3])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[4])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[3]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 2:
- if (tConnectedSides[5]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[4])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 3:
- if (tConnectedSides[3]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((tConnectedSides[2]) && (tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((!tConnectedSides[2]) && (tConnectedSides[0]) && (tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[0]) && (!tConnectedSides[4]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[2]) && (!tConnectedSides[4])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- case 4:
- if (tConnectedSides[4]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- if ((!tConnectedSides[3]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- case 5:
- if (tConnectedSides[2]) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 6)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 5)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 2)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 3)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 4)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 11)].getIcon();
- }
- if ((tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 8)].getIcon();
- }
- if ((tConnectedSides[0]) && (tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 9)].getIcon();
- }
- if ((!tConnectedSides[0]) && (tConnectedSides[3]) && (tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 10)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[3]) && (!tConnectedSides[1]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
- }
- if ((!tConnectedSides[0]) && (!tConnectedSides[1])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 0)].getIcon();
- }
- if ((!tConnectedSides[3]) && (!tConnectedSides[5])) {
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 1)].getIcon();
- }
- break;
+ int tInvertLeftRightMod = aSide % 2 * 2 - 1;
+ switch (aSide / 2) {
+ case 0:
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ if (i == 0 && j == 0)
+ continue;
+ if (isIsaControllerWithSide(aWorld, xCoord + j, yCoord, zCoord + i, aSide) != 0) {
+ IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld.getTileEntity(xCoord + j, yCoord, zCoord + i)).getMetaTileEntity();
+ return getIconByIndex(tMetaTileEntity, 4 - i * 3 - j);
+ }
+ }
+ }
+ break;
+ case 1:
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ if (i == 0 && j == 0)
+ continue;
+ if (isIsaControllerWithSide(aWorld, xCoord + j, yCoord + i, zCoord, aSide) != 0) {
+ IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld.getTileEntity(xCoord + j, yCoord + i, zCoord)).getMetaTileEntity();
+ return getIconByIndex(tMetaTileEntity, 4 + i * 3 - j * tInvertLeftRightMod);
+ }
+ }
+ }
+ break;
+ case 2:
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ if (i == 0 && j == 0)
+ continue;
+ if (isIsaControllerWithSide(aWorld, xCoord, yCoord + i, zCoord + j, aSide) != 0) {
+ IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld.getTileEntity(xCoord, yCoord + i, zCoord + j)).getMetaTileEntity();
+ return getIconByIndex(tMetaTileEntity, 4 + i * 3 + j * tInvertLeftRightMod);
+ }
+ }
+ }
+ break;
}
- return Textures.BlockIcons.CONNECTED_HULLS[(tStartIndex + 7)].getIcon();
+ return TexturesGtBlock.TEXTURE_CASING_GRINDING_MILL.getIcon();
}
public boolean isCentrifugeRunning(IMetaTileEntity aTile) {
@@ -392,12 +137,6 @@ public class TexturesGrinderMultiblock {
else {
return aTile.getBaseMetaTileEntity().isActive();
}
-
-
- }
-
- public boolean isUsingAnimatedTexture(IMetaTileEntity aMetaTileEntity) {
- return true;
}
public IIcon getIconByIndex(IMetaTileEntity aMetaTileEntity, int aIndex) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/turbine/LargeTurbineTextureHandler.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/turbine/LargeTurbineTextureHandler.java
index 188b6ed4f6..c3d6a655c3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/turbine/LargeTurbineTextureHandler.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/turbine/LargeTurbineTextureHandler.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.blocks.textures.turbine;
import net.minecraft.tileentity.TileEntity;
@@ -13,9 +14,11 @@ import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock.CustomIco
public class LargeTurbineTextureHandler {
- /**
+ */
+/**
* LP Turbines
- */
+ *//*
+
private static CustomIcon aTex1_Active = new CustomIcon("iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_1");
private static CustomIcon aTex1 = new CustomIcon("iconsets/BigTurbine/LARGE_TURBINE_LP_1");
private static CustomIcon aTex2_Active = new CustomIcon("iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_2");
@@ -79,9 +82,11 @@ public class LargeTurbineTextureHandler {
};
- /**
+ */
+/**
* HP Turbines
- */
+ *//*
+
private static CustomIcon aTexHP1_Active = new CustomIcon("iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_1");
private static CustomIcon aTexHP1 = new CustomIcon("iconsets/BigTurbine/LARGE_TURBINE_HP_1");
private static CustomIcon aTexHP2_Active = new CustomIcon("iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_2");
@@ -283,7 +288,8 @@ public class LargeTurbineTextureHandler {
public boolean isUsingAnimatedTexture(TileEntity tTileEntity) {
boolean aVal = true;
- /*IGregTechTileEntity aTile;
+ */
+/*IGregTechTileEntity aTile;
if (tTileEntity instanceof IGregTechTileEntity) {
aTile = (IGregTechTileEntity) tTileEntity;
if (aTile != null) {
@@ -293,7 +299,8 @@ public class LargeTurbineTextureHandler {
Logger.INFO("Returning "+aVal+" as Rotor Assembly controller status");
}
}
- } */
+ } *//*
+
return aVal;
}
@@ -308,3 +315,4 @@ public class LargeTurbineTextureHandler {
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java
index 46b598308d..ba3903fd88 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java
@@ -2,14 +2,17 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.misc;
import java.util.ArrayList;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.enums.*;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.data.AutoMap;
@@ -17,15 +20,18 @@ import gtPlusPlus.api.objects.minecraft.ItemStackData;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase {
private long mVoltage;
private byte mTier;
+ private int mCasing;
+ private IStructureDefinition<GMTE_AmazonPackager> STRUCTURE_DEFINITION = null;
@Override
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
@@ -53,26 +59,87 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase {
@Override
public String getCustomGUIResourceName() {
return "Generic3By3";
- }
+ }
+
+ @Override
+ public IStructureDefinition<GMTE_AmazonPackager> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GMTE_AmazonPackager>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GMTE_AmazonPackager::addAmazonPackagerList, TAE.getIndexFromPage(2, 9), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 9
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+
+
+ public final boolean addAmazonPackagerList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Amazon Warehouse",
- "This Multiblock is used for EXTREME packaging requirements",
- "Dust Schematics are inserted into the input busses",
- "If inserted into the controller, it is shared across all busses",
- "1x, 2x, 3x & Other Schematics are to be placed into the controller GUI slot",
- "Uncomparably fast compared to a single packager of the same tier",
- "Only uses 75% of the eu/t normally required",
- "Processes five items per voltage tier",
- "Size: 3x3x3 (Hollow)",
- "Supply Depot. Casings (10 at least!)",
- "Controller (front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Amazon Warehouse")
+ .addInfo("This Multiblock is used for EXTREME packaging requirements")
+ .addInfo("Dust Schematics are inserted into the input busses")
+ .addInfo("If inserted into the controller, it is shared across all busses")
+ .addInfo("1x, 2x, 3x & Other Schematics are to be placed into the controller GUI slot")
+ .addInfo("Uncomparably fast compared to a single packager of the same tier")
+ .addInfo("Only uses 75% of the eu/t normally required")
+ .addInfo("Processes five items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front center")
+ .addCasingInfo("Supply Depot Casings", 10)
+ .addInputBus("Any casing", 1)
+ .addOutputBus("Any casing", 1)
+ .addEnergyHatch("Any casing", 1)
+ .addMaintenanceHatch("Any casing", 1)
+ .addMufflerHatch("Any casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
private final void initFields() {
@@ -101,7 +168,6 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase {
}
}
-
@Override
public boolean checkRecipe(ItemStack aStack) {
@@ -229,32 +295,9 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack p1) {
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir)) {
- return false;
- }
- int tAmount = 0;
- 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)))) {
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j);
- if (!this.addToMachineList(tTileEntity, TAE.getIndexFromPage(2, 9))) {
- final Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
- final byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
-
- if (((tBlock != ModBlocks.blockCasings3Misc) || (tMeta != 9))) {
- return false;
- }
- tAmount++;
- }
- }
- }
- }
- }
- return tAmount >= 10;
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 && checkHatch();
}
@Override
@@ -277,4 +320,8 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase {
return 0;
}
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName, stackSize, hintsOnly, 1, 1, 0);
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GregtechMTE_TeslaTower.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GregtechMTE_TeslaTower.java
index b68bc48ca0..7ddf16b36f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GregtechMTE_TeslaTower.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GregtechMTE_TeslaTower.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.misc;
import static gregtech.api.enums.GT_Values.*;
@@ -48,11 +49,13 @@ public class GregtechMTE_TeslaTower extends GregtechMeta_MultiBlockBase {
private int xLoc, yLoc, zLoc;
protected int mRange;
- /**
+ */
+/**
* Machine Mode,
* {@value false} Attacks all entities,
* {@value true} Only attacks players.
- */
+ *//*
+
protected volatile boolean mMode = false;
@Override
@@ -141,16 +144,20 @@ public class GregtechMTE_TeslaTower extends GregtechMeta_MultiBlockBase {
@Override
public boolean checkRecipe(ItemStack aStack) {
- /*if (!isEnergyEnough()) {
+ */
+/*if (!isEnergyEnough()) {
this.mProgresstime = 0;
this.mMaxProgresstime = 20;
this.getBaseMetaTileEntity().setActive(false);
stopMachine();
}
else {*//*
+*/
+/*
this.mProgresstime = 1;
this.mMaxProgresstime = 100;
- this.getBaseMetaTileEntity().setActive(true);*/
+ this.getBaseMetaTileEntity().setActive(true);*//*
+
//}
return false;
}
@@ -408,11 +415,13 @@ public class GregtechMTE_TeslaTower extends GregtechMeta_MultiBlockBase {
}
protected Materials getFrameMaterial() {
- /*casingBlock = getCasingBlockItem().getBlock();
+ */
+/*casingBlock = getCasingBlockItem().getBlock();
casingMeta = getCasingBlockItem().get(0).getItemDamage();
int frameId = 4096 + getFrameMaterial().mMetaItemSubID;
frameMeta = GregTech_API.METATILEENTITIES[frameId] != null ? GregTech_API.METATILEENTITIES[frameId].getTileEntityBaseType() : W;
- */return Materials.get("TungstenCarbide");
+ *//*
+return Materials.get("TungstenCarbide");
}
protected int getCasingTextureIndex() {
@@ -467,3 +476,4 @@ public class GregtechMTE_TeslaTower extends GregtechMeta_MultiBlockBase {
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java
index 910ae8bff6..7d3b18860a 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java
@@ -1,10 +1,19 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofCoil;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.enums.HeatingCoilLevel;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import org.apache.commons.lang3.ArrayUtils;
import gregtech.api.enums.TAE;
@@ -19,18 +28,17 @@ import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
-import gtPlusPlus.xmod.gregtech.common.StaticFields59;
-import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
public class GregtechMetaTileEntity_IndustrialAlloySmelter extends GregtechMeta_MultiBlockBase {
public static int CASING_TEXTURE_ID;
- private int mHeatingCapacity = 0;
+ private HeatingCoilLevel mHeatingCapacity;
private int mLevel = 0;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialAlloySmelter> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialAlloySmelter(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -65,10 +73,6 @@ public class GregtechMetaTileEntity_IndustrialAlloySmelter extends GregtechMeta_
return true;
}
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
-
public int getMaxEfficiency(ItemStack aStack) {
return 10000;
}
@@ -101,23 +105,108 @@ public class GregtechMetaTileEntity_IndustrialAlloySmelter extends GregtechMeta_
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Alloy Smelter",
- "Gains one parallel per voltage tier",
- "Gains one multiplier per coil tier",
- "parallel = tier * coil tier",
- "Gains 5% speed bonus per coil tier",
- "Size(WxHxD): 3x5x3 (Hollow)",
- "Controller (Front middle at bottom)",
- "Inconel Reinforced Casings (layers 0/4, 10 at least!)",
- "16x Heating Coils (layers 1/3, hollow)",
- "8x Integral Encasement V (middle layer, hollow)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Output Hatch",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Alloy Smelter")
+ .addInfo("Gains one parallel per voltage tier")
+ .addInfo("Gains one multiplier per coil tier")
+ .addInfo("parallel = tier * coil tier")
+ .addInfo("Gains 5% speed bonus per coil tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 5, 3, true)
+ .addController("Bottom center")
+ .addCasingInfo("Inconel Reinforced Casings", 10)
+ .addCasingInfo("Integral Encasement V", 18)
+ .addCasingInfo("Heating Coils", 16)
+ .addInputBus("Any Inconel Reinforced Casing", 1)
+ .addOutputBus("Any Inconel Reinforced Casing", 1)
+ .addEnergyHatch("Any Inconel Reinforced Casing", 1)
+ .addMaintenanceHatch("Any Inconel Reinforced Casing", 1)
+ .addMufflerHatch("Any Inconel Reinforced Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialAlloySmelter> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialAlloySmelter>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"HHH", "H-H", "HHH"},
+ {"VVV", "V-V", "VVV"},
+ {"HHH", "H-H", "HHH"},
+ {"C~C", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialAlloySmelter::addIndustrialAlloySmelterList, CASING_TEXTURE_ID, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 1
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofCoil(
+ GregtechMetaTileEntity_IndustrialAlloySmelter::setCoilLevel, GregtechMetaTileEntity_IndustrialAlloySmelter::getCoilLevel
+ )
+ )
+ .addElement(
+ 'V',
+ ofBlock(
+ ModBlocks.blockCasingsTieredGTPP, 4
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public final boolean addIndustrialAlloySmelterList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName, stackSize, hintsOnly, 1, 4, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mLevel = 0;
+ setCoilLevel(HeatingCoilLevel.None);
+ return checkPiece(mName, 1, 4, 0) && mCasing >= 10 && getCoilLevel() != HeatingCoilLevel.None && (mLevel = getCoilLevel().getTier() + 1) > 0 && checkHatch();
}
@Override
@@ -130,90 +219,6 @@ public class GregtechMetaTileEntity_IndustrialAlloySmelter extends GregtechMeta_
return 100;
}
- @Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
-
- this.mLevel = 0;
- this.mHeatingCapacity = 0;
- for (int i=1;i<4;i++) {
- if (!aBaseMetaTileEntity.getAirOffset(xDir, i, zDir)) {
- Logger.INFO("Did not find air inside on layer "+i);
- return false;
- }
- }
- /*if (!addMufflerToMachineList(aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir, 3, zDir),
- CASING_TEXTURE_ID)) {
- return false;
- }*/
- Block tUsedBlock = aBaseMetaTileEntity.getBlockOffset(xDir + 1, 1, zDir);
- byte tUsedMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + 1, 1, zDir);
- this.mLevel = StaticFields59.getTierForCoil(tUsedBlock, tUsedMeta);
- this.mHeatingCapacity = StaticFields59.getHeatingCapacityForCoil(tUsedBlock, tUsedMeta);
-
- int aCasingCount = 0;
-
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
-
- if ((i != 0) || (j != 0)) {
- //Coils 1
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 1, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 1, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing. First Layer");
- return false;
- }
-
- //Integral Casings
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 2, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 2, zDir + j), ModBlocks.blockCasingsTieredGTPP, 4)) {
- Logger.INFO("Integral Framework missing. Second Layer");
- return false;
- }
-
- //Coils 2
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 3, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 3, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing. Third Layer");
- return false;
- }
- }
-
- //Top Layer
-
- Block aCurrentBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, 4, zDir + j);
- int aCurrentMeta = (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 4, zDir + j);
- if (aCurrentBlock == ModBlocks.blockCasings3Misc && aCurrentMeta == 1) {
- aCasingCount++;
- }
-
- final IGregTechTileEntity tTileEntity2 = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 4, zDir + j);
- if (!isValidBlockForStructure(tTileEntity2, CASING_TEXTURE_ID, true, aCurrentBlock, aCurrentMeta, ModBlocks.blockCasings3Misc, 1)) {
- Logger.INFO("Top Layer missing.");
- return false;
- }
- }
- }
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
-
-
- Block aCurrentBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j);
- int aCurrentMeta = (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j);
- if (aCurrentBlock == ModBlocks.blockCasings3Misc && aCurrentMeta == 1) {
- aCasingCount++;
- }
- if ((xDir + i != 0) || (zDir + j != 0)) {
- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 0, zDir + j);
- if (!isValidBlockForStructure(tTileEntity, CASING_TEXTURE_ID, true, aCurrentBlock, aCurrentMeta, ModBlocks.blockCasings3Misc, 1)) {
- Logger.INFO("Bottom Layer missing.");
- return false;
- }
- }
- }
- }
-
- return aCasingCount >= 10;
- }
-
public boolean checkRecipe(ItemStack aStack) {
return checkRecipeGeneric(this.getMaxParallelRecipes(), 100, 5 * this.mLevel); // Will have to clone the logic from parent class to handle heating coil
// tiers.
@@ -255,7 +260,7 @@ public class GregtechMetaTileEntity_IndustrialAlloySmelter extends GregtechMeta_
// EU discount
float tRecipeEUt = (tRecipe.mEUt * aEUPercent) / 100.0f;
- int tHeatCapacityDivTiers = mHeatingCapacity / 900;
+ int tHeatCapacityDivTiers = (int) mHeatingCapacity.getHeat() / 900;
float tTotalEUt = 0.0f;
int parallelRecipes = 0;
@@ -373,5 +378,11 @@ public class GregtechMetaTileEntity_IndustrialAlloySmelter extends GregtechMeta_
}
-
+ public HeatingCoilLevel getCoilLevel() {
+ return mHeatingCapacity;
+ }
+
+ public void setCoilLevel(HeatingCoilLevel aCoilLevel) {
+ mHeatingCapacity = aCoilLevel;
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java
index 4ffea7eb24..ce0bc04527 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java
@@ -1,12 +1,16 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
@@ -22,6 +26,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialArcFurnace
extends GregtechMeta_MultiBlockBase {
@@ -30,6 +38,8 @@ extends GregtechMeta_MultiBlockBase {
public static String mCasingName = "Tempered Arc Furnace Casing";
private boolean mPlasmaMode = false;
private int mSize = 0;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialArcFurnace> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialArcFurnace(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -52,27 +62,144 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
-
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName.toLowerCase().contains(".name")) {
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings4Misc, 3);
}
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for Industrial Arc Furnace")
+ .addInfo("250% faster than using single block machines of the same voltage")
+ .addInfo("Processes 8 items per voltage tier")
+ .addInfo("Max Size required to process Plasma recipes")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .addController("Top center")
+ .addStructureInfo("Size: nx3xn [WxHxL] (Hollow)")
+ .addStructureInfo("n can be 3, 5 or 7")
+ .addCasingInfo(mCasingName, 10)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialArcFurnace> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialArcFurnace>builder()
+ .addShape(mName + "3", new String[][]{
+ {"CCC", "C~C", "CCC"},
+ {"CCC", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ })
+ .addShape(mName + "5", new String[][]{
+ {"CCCCC", "CCCCC", "CC~CC", "CCCCC", "CCCCC"},
+ {"CCCCC", "C---C", "C---C", "C---C", "CCCCC"},
+ {"CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"},
+ })
+ .addShape(mName + "7", new String[][]{
+ {"CCCCCCC", "CCCCCCC", "CCCCCCC", "CCC~CCC", "CCCCCCC", "CCCCCCC", "CCCCCCC"},
+ {"CCCCCCC", "C-----C", "C-----C", "C-----C", "C-----C", "C-----C", "CCCCCCC"},
+ {"CCCCCCC", "CCCCCCC", "CCCCCCC", "CCCCCCC", "CCCCCCC", "CCCCCCC", "CCCCCCC"},
+ })
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialArcFurnace::addIndustrialArcFurnaceList, mCasingTextureID, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings4Misc, 3
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
- return new String[]{
- "Controller Block for Industrial Arc Furnace",
- "250% faster than using single block machines of the same voltage",
- "Processes 8 items per voltage tier",
- "Size: nx3xn [WxHxL] (Hollow)",
- "n can be 3, 5 or 7",
- "Max Size required to process Plasma recipes",
- mCasingName+"s (10 at least!)",
- "Controller (top centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Input Hatch",
- "1x Output Hatch",
- "1x Energy Hatch",
- };
+ public void clearHatches() {
+ mOutputHatches.clear();
+ mInputHatches.clear();
+ mOutputBusses.clear();
+ mInputBusses.clear();
+ mEnergyHatches.clear();
+ mMaintenanceHatches.clear();
+ mMufflerHatches.clear();
+ }
+
+ public final boolean addIndustrialArcFurnaceList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ int size;
+ switch (stackSize.stackSize) {
+ case 1: size = 3; break;
+ case 2: size = 5; break;
+ default: size = 7; break;
+ }
+ buildPiece(mName + size, stackSize, hintsOnly, (size - 1) / 2, (size - 1) / 2, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mSize = 0;
+ if (checkPiece(mName + "3", 1, 1, 0)) {
+ mSize = 3;
+ return mCasing >= 10 && checkHatch();
+ }
+ mCasing = 0;
+ clearHatches();
+ if (checkPiece(mName + "5", 2, 2, 0)) {
+ mSize = 5;
+ return mCasing >= 10 && checkHatch();
+ }
+ mCasing = 0;
+ clearHatches();
+ if (checkPiece(mName + "7", 3, 3, 0)) {
+ mSize = 3;
+ return mCasing >= 10 && checkHatch();
+ }
+ return false;
}
@Override
@@ -82,7 +209,7 @@ extends GregtechMeta_MultiBlockBase {
@Override
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) {
- if (aSide == 0 || aSide == 1) {
+ if (aSide == aFacing) {
return new ITexture[]{Textures.BlockIcons.getCasingTextureForId(mCasingTextureID),
new GT_RenderedTexture(aActive ? TexturesGtBlock.Overlay_Machine_Controller_Default_Active : TexturesGtBlock.Overlay_Machine_Controller_Default)};
}
@@ -105,11 +232,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
return this.checkRecipeGeneric(this.mSize * 8 * GT_Utility.getTier(this.getMaxInputVoltage()), 100, 250);
}
@@ -129,167 +251,6 @@ extends GregtechMeta_MultiBlockBase {
this.sendLoopStart((byte) 1);
}
- @SuppressWarnings("deprecation")
- @Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- int x = 1;
- int z = 1;
- int depth = 1;
- int mPlascreteCount = 0;
- for (int i = 1; i < 4; i++) {
- if (aBaseMetaTileEntity.getAirOffset(i, -1, 0)) {
- Logger.INFO("aitfound "+i);
- continue;
- }
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(i, -1, 0);
- int tMeta = aBaseMetaTileEntity.getMetaIDOffset(i, -1, 0);
- {
- if (isValidCasingBlock(tBlock, tMeta)) {
- x = i;
- z = i;
- Logger.INFO("Found Correct Edge Casing at offset "+i);
- break;
- } else {
- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(i, -1, 0);
- if (addToMachineList(tTileEntity, mCasingTextureID)) {
- Logger.INFO("Found Tile Entity on Edge Casing on middle layer, it is a valid htach/bus.");
- x = i;
- z = i;
- break;
- }
- else {
- return false;
- }
- }
- }
- }
- for (int i = 0; i > -3; i--) {
- if (!aBaseMetaTileEntity.getAirOffset(0, i, 0)) {
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(0, i, 0);
- int tMeta = aBaseMetaTileEntity.getMetaIDOffset(0, i, 0);
- if (isValidCasingBlock(tBlock, tMeta)) {
- depth = i;
- Logger.INFO("Found Correct Floor Casing at offset "+depth);
- break;
- }
- }
- }
- //!addToMachineList(tTileEntity, mCasingTextureID)
- if (depth >= -1) {
- Logger.INFO("Structure is not 5 blocks or taller. depth = "+depth);
- return false;
- }
-
- mSize = x;
-
- Logger.INFO("Using X: "+x+" | Y: "+depth+" | Z: "+z+" as offsets");
- for (int dX = -x; dX <= x; dX++) {
- for (int dZ = -z; dZ <= z; dZ++) {
- for (int dY = 0; dY >= depth; dY--) {
- if (dX == -x || dX == x || dY == -depth || dY == depth || dZ == -z || dZ == z) {
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(dX, dY, dZ);
- int tMeta = aBaseMetaTileEntity.getMetaIDOffset(dX, dY, dZ);
- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(dX, dY, dZ);
- if (dY == 0) {
- if (dX == -x || dX == x || dZ == -z || dZ == z) {
- if (!isValidCasingBlock(tBlock, tMeta) && !addToMachineList(tTileEntity, mCasingTextureID)) {
- Logger.INFO("Found Incorrect Edge Casing at offset X:"+dX+" | Y:"+dY+" | Z:"+dZ);
- return false;
- }
- } else if (dX == 0 && dZ == 0) {
-
- } else {
- if (tBlock != ModBlocks.blockCasings3Misc || tMeta != 1) {
- Logger.INFO("Found Incorrect Inner Casing at offset X:"+dX+" | Y:"+dY+" | Z:"+dZ);
- return false;
- }
- }
- }
- else if (dY < 0) {
- //Check Walls
- if (dY != depth && (dX == -x || dX == x || dZ == -z || dZ == z)) {
- if (!isValidCasingBlock(tBlock, tMeta) && !addToMachineList(tTileEntity, mCasingTextureID)) {
- Logger.INFO("Found Incorrect Wall Casing at offset X:"+dX+" | Y:"+dY+" | Z:"+dZ);
- return false;
- }
- else {
- mPlascreteCount++;
- }
- }
- //Check Floor
- if (dY == depth) {
- if (!isValidCasingBlock(tBlock, tMeta) && !addToMachineList(tTileEntity, mCasingTextureID)) {
- Logger.INFO("Found Incorrect Floor Casing at offset X:"+dX+" | Y:"+dY+" | Z:"+dZ);
- return false;
- }
- else {
- mPlascreteCount++;
- }
- }
- //Check Spacing
- else {
- if (aBaseMetaTileEntity.getAirOffset(dX, dY, dZ)) {
- Logger.INFO("Found Incorrect Inner Spacing at offset X:"+dX+" | Y:"+dY+" | Z:"+dZ);
- return false;
- }
- }
- }
-
- else {/*
- if (isValidCasingBlock(tBlock, tMeta)) {
- }
- else {
- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(dX, dY, dZ);
- if ((!addMaintenanceToMachineList(tTileEntity, mCasingTextureID))
- && (!addEnergyInputToMachineList(tTileEntity, mCasingTextureID))) {
- if ((!addInputToMachineList(tTileEntity, mCasingTextureID))
- && (!addOutputToMachineList(tTileEntity, mCasingTextureID)) && (!addMufflerToMachineList(tTileEntity, mCasingTextureID))) {
-
- if (!aBaseMetaTileEntity.getAirOffset(dX, dY, dZ)) {
- Logger.INFO("Found Invalid object @ offset X:"+dX+" | Y:"+dY+" | Z:"+dZ +" | Block: "+(tBlock != null ? tBlock.getLocalizedName() : "Air"));
- int aX = aBaseMetaTileEntity.getXCoord()+dX;
- int aY = aBaseMetaTileEntity.getYCoord()+dY;
- int aZ = aBaseMetaTileEntity.getZCoord()+dZ;
- //aBaseMetaTileEntity.getWorld().setBlock(aX, aY, aZ, Blocks.pumpkin, 0, 3);
- return false;
- }
-
- }
- }
- }
- */}
- }
- }
- }
- }
- if (mMaintenanceHatches.size() != 1 || mEnergyHatches.size() < 1) {
- Logger.INFO("Bad Hatches");
- return false;
- }
-
-
-
- for (int dX = -x + 1; dX <= x - 1; dX++) {
- for (int dZ = -z + 1; dZ <= z - 1; dZ++) {
- for (int dY = -1; dY >= depth + 1; dY--) {/*
-
- Block aInnerBlock = aBaseMetaTileEntity.getBlockOffset(dX, dY, dZ);
- if (aBaseMetaTileEntity.getAirOffset(dX, dY, dZ) || aInnerBlock instanceof BlockAir) {
- int aX, aY, aZ;
- aX = aBaseMetaTileEntity.getXCoord()+dX;
- aY = aBaseMetaTileEntity.getYCoord()+dY;
- aZ = aBaseMetaTileEntity.getZCoord()+dZ;
- aBaseMetaTileEntity.getWorld().setBlock(aX, aY, aZ, Blocks.lava, 0, 3);
- }
-
- */}
- }
- }
-
- Logger.INFO("Built Structure");
- return true;
- }
-
@Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
@@ -328,17 +289,6 @@ extends GregtechMeta_MultiBlockBase {
return 15;
}
- public boolean isValidCasingBlock(Block aBlock, int aMeta) {
- if (aBlock == getCasingBlock() && aMeta == getCasingMeta()) {
- return true;
- }
- if (aBlock == getCasingBlock2() && aMeta == getCasingMeta2()) {
- return true;
- }
- Logger.INFO("Found "+(aBlock != null ? aBlock.getLocalizedName() : "Air") + "With Meta "+aMeta);
- return false;
- }
-
public byte getCasingTextureIndex() {
return (byte) mCasingTextureID;
}
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 abcdd05e17..3e4e0c128d 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,11 +1,15 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe;
@@ -18,7 +22,10 @@ import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_IndustrialCentrifuge
extends GregtechMeta_MultiBlockBase {
@@ -28,6 +35,8 @@ extends GregtechMeta_MultiBlockBase {
private static ITexture frontFaceActive;
private static CustomIcon GT9_5_Active = new CustomIcon("iconsets/LARGECENTRIFUGE_ACTIVE5");
private static CustomIcon GT9_5 = new CustomIcon("iconsets/LARGECENTRIFUGE5");
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialCentrifuge> STRUCTURE_DEFINITION = null;
//public static double recipesComplete = 0;
public GregtechMetaTileEntity_IndustrialCentrifuge(final int aID, final String aName, final String aNameRegional) {
@@ -53,22 +62,104 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- 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)",
- "Centrifuge Casings (10 at least)",
- "Controller (Front Center)",
- "1x Input Hatch",
- "1x Output Hatch",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Centrifuge")
+ .addInfo("125% faster than using single block machines of the same voltage")
+ .addInfo("Disable animations with a screwdriver")
+ .addInfo("Only uses 90% of the eu/t normally required")
+ .addInfo("Processes six items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Centrifuge Casings", 10)
+ .addInputBus("Any Casing except front", 1)
+ .addOutputBus("Any Casing except front", 1)
+ .addInputHatch("Any Casing except front", 1)
+ .addOutputHatch("Any Casing except front", 1)
+ .addEnergyHatch("Any Casing except front", 1)
+ .addMaintenanceHatch("Any Casing except front", 1)
+ .addMufflerHatch("Any Casing except front", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialCentrifuge> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialCentrifuge>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"XXX", "CCC", "CCC"},
+ {"X~X", "C-C", "CCC"},
+ {"XXX", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialCentrifuge::addIndustrialCentrifugeList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 0
+ )
+ )
+ )
+ )
+ .addElement(
+ 'X',
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 0
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 - 8 && checkHatch();
+ }
+
+ public final boolean addIndustrialCentrifugeList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -92,11 +183,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric(6* GT_Utility.getTier(this.getMaxInputVoltage()), 90, 125);
}
@@ -124,39 +210,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final 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, getCasingTextureIndex(), true, aBlock, aMeta,
- ModBlocks.blockCasingsMisc, 0)) {
- Logger.INFO("Bad centrifuge casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
- }
- return tAmount >= 10;
- }
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java
index b17e88529d..abbe06db31 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCokeOven.java
@@ -1,25 +1,35 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_IndustrialCokeOven
extends GregtechMeta_MultiBlockBase {
private int mLevel = 0;
+ private int mCasing;
+ private int mCasing1;
+ private int mCasing2;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialCokeOven> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialCokeOven(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -40,22 +50,124 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{"Processes Logs and Coal into Charcoal and Coal Coke.",
- "Controller Block for the Industrial Coke Oven",
- "Gain 4% speed bonus per voltage tier increased",
- "Process 12x materials with Heat Resistant Casings",
- "Or 24x materials with Heat Proof Casings",
- "Size: 3x3x3 (Hollow)",
- "Structural Coke Oven Casings (8 at least!)",
- "Controller (front middle at bottom)",
- "8x Heat Resistant/Proof Coke Oven Casings (middle Layer, hollow)",
- "1x Input Hatch",
- "1x Output Hatch",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch"
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Processes Logs and Coal into Charcoal and Coal Coke.")
+ .addInfo("Controller Block for the Industrial Coke Oven")
+ .addInfo("Gain 4% speed bonus per voltage tier increased")
+ .addInfo("Process 12x materials with Heat Resistant Casings")
+ .addInfo("Or 24x materials with Heat Proof Casings")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front middle at bottom")
+ .addCasingInfo("Structural Coke Oven Casings", 8)
+ .addCasingInfo("Heat Resistant/Proof Coke Oven Casings", 8)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialCokeOven> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialCokeOven>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "C-C", "CCC"},
+ {"HHH", "H-H", "HHH"},
+ {"C~C", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialCokeOven::addIndustrialCokeOvenList, TAE.GTPP_INDEX(1), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 1
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofChain(
+ onElementPass(
+ x -> ++x.mCasing1,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 2
+ )
+ ),
+ onElementPass(
+ x -> ++x.mCasing2,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 3
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 2, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mCasing1 = 0;
+ mCasing2 = 0;
+ mLevel = 0;
+ if (checkPiece(mName, 1, 2, 0)) {
+ if (mCasing1 == 8) mLevel = 1;
+ if (mCasing2 == 8) mLevel = 2;
+ return mLevel > 0 && mCasing >= 8 && checkHatch();
+ }
+ return false;
+ }
+
+ public final boolean addIndustrialCokeOvenList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -87,16 +199,6 @@ extends GregtechMeta_MultiBlockBase {
}
- /* @Override
- public boolean isCorrectMachinePart(ItemStack aStack) {
- return true;
- }*/
-
- @Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
@Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric(getMaxParallelRecipes(), getEuDiscountForParallelism(), 0);
@@ -113,58 +215,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- this.mLevel = 0;
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 1, zDir)) {
- Logger.INFO("No air? "+xDir+", 1, "+zDir);
- return false;
- }
-
- final byte tUsedMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + 1, 1, zDir);
- switch (tUsedMeta) {
- case 2:
- this.mLevel = 1;
- break;
- case 3:
- this.mLevel = 2;
- break;
- default:
- Logger.INFO("Bad Heating Coils.");
- return false;
- }
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- if ((i != 0) || (j != 0)) {
- final IGregTechTileEntity tTileEntity2 = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 2, zDir + j);
- if (!isValidBlockForStructure(null, TAE.GTPP_INDEX(1), false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 1, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 1, zDir + j), ModBlocks.blockCasingsMisc, tUsedMeta)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
-
- if (!isValidBlockForStructure(tTileEntity2, TAE.GTPP_INDEX(1), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, 2, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 2, zDir + j), ModBlocks.blockCasingsMisc, 1)) {
- Logger.INFO("Casings missing from top layer of coke oven.");
- return false;
- }
- }
- }
- }
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- if (((xDir + i) != 0) || ((zDir + j) != 0)) {
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 0, zDir + j);
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(1), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j), ModBlocks.blockCasingsMisc, 1)) {
- Logger.INFO("Casings missing from bottom layer of coke oven.");
- return false;
- }
- }
- }
- }
- return true;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
@@ -174,11 +224,6 @@ extends GregtechMeta_MultiBlockBase {
return 4;
}
- /* @Override
- public int getDamageToComponent(ItemStack aStack) {
- return 0;
- }*/
-
@Override
public int getAmountOfOutputs() {
return 24;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java
index 32b18424fa..80cf2ef77b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java
@@ -1,11 +1,15 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.core.block.ModBlocks;
@@ -18,10 +22,16 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialCuttingMachine
extends GregtechMeta_MultiBlockBase {
private boolean mCuttingMode = true;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialCuttingMachine> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialCuttingMachine(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -42,19 +52,93 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Cutting Factory",
- "200% faster than using single block machines of the same voltage",
- "Only uses 75% of the eu/t normally required",
- "Processes four items per voltage tier",
- "Size: 3x3x5 [WxHxL] (Hollow)", "Controller (front centered)",
- "Cutting Factory Frames (26 at least!)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Input Hatch",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Cutting Factory")
+ .addInfo("200% faster than using single block machines of the same voltage")
+ .addInfo("Only uses 75% of the eu/t normally required")
+ .addInfo("Processes four items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 5, true)
+ .addController("Front Center")
+ .addCasingInfo("Cutting Factory Frames", 26)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialCuttingMachine> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialCuttingMachine>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "C-C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialCuttingMachine::addIndustrialCuttingMachineList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 13
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 26 && checkHatch();
+ }
+
+ public final boolean addIndustrialCuttingMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -81,11 +165,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric((4* GT_Utility.getTier(this.getMaxInputVoltage())), 75, 200);
}
@@ -101,77 +180,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final byte tSide = this.getBaseMetaTileEntity().getBackFacing();
- int aCasingCount = 0;
- if ((this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 1)) && (this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 2) && (this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 3)))) {
- for (byte i = 2; i < 6; i = (byte) (i + 1)) {
- IGregTechTileEntity tTileEntity;
- if ((null != (tTileEntity = this.getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(i, 2))) &&
- (tTileEntity.getFrontFacing() == this.getBaseMetaTileEntity().getFrontFacing()) && (tTileEntity.getMetaTileEntity() != null) &&
- ((tTileEntity.getMetaTileEntity() instanceof GregtechMetaTileEntity_IndustrialCuttingMachine))) {
- //Utils.LOG_INFO("False 1");
- return false;
- }
- }
- final int tX = this.getBaseMetaTileEntity().getXCoord();
- final int tY = this.getBaseMetaTileEntity().getYCoord();
- final int tZ = this.getBaseMetaTileEntity().getZCoord();
-
-
- //Check Rear Middle
- {
- Block aBlock = this.getBaseMetaTileEntity()
- .getBlockAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- int aMeta = this.getBaseMetaTileEntity()
- .getMetaIDAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- IGregTechTileEntity aTile = this.getBaseMetaTileEntity()
- .getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(),
- getCasingMeta())) {
- log("Bad Casing on Cutting Machine.");
- return false;
- }
- }
-
-
- for (byte i = -1; i < 2; i = (byte) (i + 1)) {
- for (byte j = -1; j < 2; j = (byte) (j + 1)) {
- if ((i != 0) || (j != 0)) {
- for (byte k = 0; k < 5; k = (byte) (k + 1)) {
- Block aBlock = this.getBaseMetaTileEntity().getBlock(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- int aMeta = this.getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- IGregTechTileEntity aTile = this.getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(), getCasingMeta())) {
- log("Bad Casing on Cutting Machine.");
- return false;
- }
- else {
- if (aTile == null) {
- aCasingCount++;
- }
- }
- }
- }
- }
- }
- if ((this.mInputBusses.size() == 0) || (this.mOutputBusses.size() == 0)) {
- log("Incorrect amount of Input & Output busses.");
- return false;
- }
- if ((this.mMaintenanceHatches.size() != 1)) {
- log("Incorrect amount of Maintenance or Energy hatches.");
- return false;
- }
- } else {
- log("False 5");
- return false;
- }
- log("True");
- return aCasingCount >= 26;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java
index 499f32efd9..39d5818a5a 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java
@@ -1,10 +1,19 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofCoil;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.enums.HeatingCoilLevel;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import org.apache.commons.lang3.ArrayUtils;
import gregtech.api.enums.TAE;
@@ -35,8 +44,10 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends GregtechMeta_Mu
private static int CASING_TEXTURE_ID;
private static String mCasingName = "Vacuum Casing";
- private int mHeatingCapacity = 0;
+ private HeatingCoilLevel mHeatingCapacity;
private boolean mDehydratorMode = false;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialDehydrator> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialDehydrator(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -54,22 +65,113 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends GregtechMeta_Mu
return new GregtechMetaTileEntity_IndustrialDehydrator(mName);
}
- public String[] getTooltip() {
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName.toLowerCase().contains(".name")) {
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings4Misc, 10);
- }
- return new String[] {
- "Factory Grade Vacuum Furnace",
- "Can toggle the operation temperature with a Screwdriver",
- "All Dehydrator recipes are Low Temp recipes",
- "Speed: 120% | Eu Usage: 50% | Parallel: 4",
- "Constructed exactly the same as a normal EBF",
- "Has three layers of coils instead (24)",
- "Use "+mCasingName+"s (10 at least!)",
- "Each 900K over the min. Heat Capacity grants 5% speedup (multiplicatively)",
- "Each 1800K over the min. Heat Capacity allows for one upgraded overclock",
- "Upgraded overclocks reduce recipe time to 25% and increase EU/t to 400%",
- };
+ }
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Factory Grade Vacuum Furnace")
+ .addInfo("Can toggle the operation temperature with a Screwdriver")
+ .addInfo("All Dehydrator recipes are Low Temp recipes")
+ .addInfo("Speed: 120% | Eu Usage: 50% | Parallel: 4")
+ .addInfo("Each 900K over the min. Heat Capacity grants 5% speedup (multiplicatively)")
+ .addInfo("Each 1800K over the min. Heat Capacity allows for one upgraded overclock")
+ .addInfo("Upgraded overclocks reduce recipe time to 25% and increase EU/t to 400%")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 4, 3, true)
+ .addController("Bottom Center")
+ .addCasingInfo(mCasingName, 10)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialDehydrator> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialDehydrator>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"HHH", "H-H", "HHH"},
+ {"HHH", "H-H", "HHH"},
+ {"HHH", "H-H", "HHH"},
+ {"C~C", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialDehydrator::addIndustrialDehydratorList, CASING_TEXTURE_ID, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings4Misc, 10
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofCoil(
+ GregtechMetaTileEntity_IndustrialDehydrator::setCoilLevel, GregtechMetaTileEntity_IndustrialDehydrator::getCoilLevel
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 4, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ setCoilLevel(HeatingCoilLevel.None);
+ return checkPiece(mName, 1, 4, 0) && mCasing >= 10 && getCoilLevel() != HeatingCoilLevel.None && checkHatch();
+ }
+
+ public final boolean addIndustrialDehydratorList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex,
@@ -90,73 +192,6 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends GregtechMeta_Mu
return true;
}
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
-
-
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
-
- this.mHeatingCapacity = 0;
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 1, zDir)) {
- return false;
- }
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 2, zDir)) {
- return false;
- }
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 3, zDir)) {
- return false;
- }
- Block tUsedBlock = aBaseMetaTileEntity.getBlockOffset(xDir + 1, 2, zDir);
- byte tUsedMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + 1, 2, zDir);
- this.mHeatingCapacity = StaticFields59.getHeatingCapacityForCoil(tUsedBlock, tUsedMeta);
-
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- if ((i != 0) || (j != 0)) {
- //Coils 1
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 1, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 1, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
-
- //Coils 2
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 2, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 2, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
-
- //Coils 3
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 3, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 2, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
- }
-
- //Top Layer
- final IGregTechTileEntity tTileEntity2 = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 4, zDir + j);
- if (!isValidBlockForStructure(tTileEntity2, CASING_TEXTURE_ID, true, aBaseMetaTileEntity.getBlockOffset(xDir + i, 4, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 4, zDir + j), ModBlocks.blockCasings4Misc, 10)) {
- Logger.INFO("Top Layer missing.");
- return false;
- }
- }
- }
- 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 (!isValidBlockForStructure(tTileEntity, CASING_TEXTURE_ID, true, aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j), ModBlocks.blockCasings4Misc, 10)) {
- Logger.INFO("Bottom Layer missing.");
- return false;
- }
- }
- }
- }
- return true;
- }
-
public int getMaxEfficiency(ItemStack aStack) {
return 10000;
}
@@ -222,7 +257,7 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends GregtechMeta_Mu
// Remember last recipe - an optimization for findRecipe()
this.mLastRecipe = tRecipe;
- if (tRecipe == null || this.mHeatingCapacity < tRecipe.mSpecialValue) {
+ if (tRecipe == null || this.mHeatingCapacity.getHeat() < tRecipe.mSpecialValue) {
Logger.WARNING("BAD RETURN - 1");
return false;
}
@@ -235,7 +270,7 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends GregtechMeta_Mu
// EU discount
float tRecipeEUt = (tRecipe.mEUt * aEUPercent) / 100.0f;
- int tHeatCapacityDivTiers = (mHeatingCapacity - tRecipe.mSpecialValue) / 900;
+ int tHeatCapacityDivTiers = (int) (mHeatingCapacity.getHeat() - tRecipe.mSpecialValue) / 900;
float tTotalEUt = 0.0f;
int parallelRecipes = 0;
@@ -376,6 +411,13 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends GregtechMeta_Mu
mDehydratorMode = aNBT.getBoolean("mDehydratorMode");
}
+ public HeatingCoilLevel getCoilLevel() {
+ return mHeatingCapacity;
+ }
+
+ public void setCoilLevel(HeatingCoilLevel aCoilLevel) {
+ mHeatingCapacity = aCoilLevel;
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialElectrolyzer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialElectrolyzer.java
index a6399b6921..af62225ffc 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialElectrolyzer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialElectrolyzer.java
@@ -1,25 +1,32 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import gtPlusPlus.xmod.gregtech.common.blueprint.Blueprint_Generic_3x3;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_IndustrialElectrolyzer
extends GregtechMeta_MultiBlockBase {
+
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialElectrolyzer> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_IndustrialElectrolyzer(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -39,20 +46,97 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{"Controller Block for the Industrial Electrolyzer",
- "180% faster than using single block machines of the same voltage",
- "Only uses 90% of the eu/t normally required",
- "Processes two items per voltage tier",
- "Size: 3x3x3 (Hollow)",
- "Electrolyzer Casings for the rest (10 at least!)",
- "Controller (front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Input Hatch",
- "1x Output Hatch",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Electrolyzer")
+ .addInfo("180% faster than using single block machines of the same voltage")
+ .addInfo("Only uses 90% of the eu/t normally required")
+ .addInfo("Processes two items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Electrolyzer Casings", 10)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialElectrolyzer> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialElectrolyzer>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialElectrolyzer::addIndustrialElectrolyzerList, TAE.GTPP_INDEX(5), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 5
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 && checkHatch();
+ }
+
+ public final boolean addIndustrialElectrolyzerList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -79,78 +163,10 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric(2* GT_Utility.getTier(this.getMaxInputVoltage()), 90, 180);
}
- private class Blueprint_Electrolyzer extends Blueprint_Generic_3x3 {
-
- public Blueprint_Electrolyzer() {
- super(new Pair<Block, Integer>(ModBlocks.blockCasingsMisc, 5), TAE.GTPP_INDEX(5));
- }
-
- @Override
- public int getMinimumInputBus() {
- return 0;
- }
-
- @Override
- public int getMinimumInputHatch() {
- return 0;
- }
-
- @Override
- public int getMinimumOutputBus() {
- return 0;
- }
-
- @Override
- public int getMinimumOutputHatch() {
- return 0;
- }
-
- }
-
- private static Blueprint_Electrolyzer mBluePrint;
-
- @Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final 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, TAE.GTPP_INDEX(5), true, aBlock, aMeta,
- ModBlocks.blockCasingsMisc, 5)) {
- Logger.INFO("Bad Electrolyzer casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
- }
- return tAmount >= 10;
- }
- }
-
@Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java
index fb5a378fb0..ba8181abd1 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java
@@ -2,19 +2,19 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import java.util.ArrayList;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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_InputBus;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
@@ -22,9 +22,17 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialExtruder
extends GregtechMeta_MultiBlockBase {
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialExtruder> STRUCTURE_DEFINITION = null;
+
+
public GregtechMetaTileEntity_IndustrialExtruder(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -44,22 +52,110 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{"Controller Block for the Material Extruder",
- "250% faster than using single block machines of the same voltage",
- "Processes four items per voltage tier",
- "Extrusion Shape for recipe goes in the Input Bus",
- "Each Input Bus can have a different shape!",
- "You can use several input busses per multiblock",
- "Size: 3x3x5 [WxHxL] (Hollow)",
- "Inconel Reinforced Casings (28 at least!)",
- "Controller (front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Input Hatch",
- "1x Energy Hatch",
- //"Maintenance Hatch must be at the back, centered",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Material Extruder")
+ .addInfo("250% faster than using single block machines of the same voltage")
+ .addInfo("Processes four items per voltage tier")
+ .addInfo("Extrusion Shape for recipe goes in the Input Bus")
+ .addInfo("Each Input Bus can have a different shape!")
+ .addInfo("You can use several input buses per multiblock")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 5, true)
+ .addController("Front Center")
+ .addCasingInfo("Inconel Reinforced Casings", 28)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Back Center", 2)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialExtruder> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialExtruder>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "C-C", "C-C", "CMC"},
+ {"CCC", "CCC", "CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialExtruder::addIndustrialExtruderList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .addElement(
+ 'M',
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialExtruder::addIndustrialExtruderMufflerList, getCasingTextureIndex(), 2
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 28 && checkHatch();
+ }
+
+ public final boolean addIndustrialExtruderList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ public final boolean addIndustrialExtruderMufflerList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -91,11 +187,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
for (GT_MetaTileEntity_Hatch_InputBus tBus : mInputBusses) {
ArrayList<ItemStack> tBusItems = new ArrayList<ItemStack>();
@@ -140,78 +231,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final byte tSide = this.getBaseMetaTileEntity().getBackFacing();
- int aCasingCount = 0;
- if ((this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 1)) && (this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 2) && (this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 3)))) {
- for (byte i = 2; i < 6; i = (byte) (i + 1)) {
- IGregTechTileEntity tTileEntity;
- if ((null != (tTileEntity = this.getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(i, 2))) &&
- (tTileEntity.getFrontFacing() == this.getBaseMetaTileEntity().getFrontFacing()) && (tTileEntity.getMetaTileEntity() != null) &&
- ((tTileEntity.getMetaTileEntity() instanceof GregtechMetaTileEntity_IndustrialExtruder))) {
- //Utils.LOG_INFO("False 1");
- return false;
- }
- }
-
- //Check Rear Middle
- {
- Block aBlock = this.getBaseMetaTileEntity()
- .getBlockAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- int aMeta = this.getBaseMetaTileEntity()
- .getMetaIDAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- IGregTechTileEntity aTile = this.getBaseMetaTileEntity()
- .getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(),
- getCasingMeta())) {
- log("Bad Casing on Extruder.");
- return false;
- }
- }
-
- final int tX = this.getBaseMetaTileEntity().getXCoord();
- final int tY = this.getBaseMetaTileEntity().getYCoord();
- final int tZ = this.getBaseMetaTileEntity().getZCoord();
- for (byte i = -1; i < 2; i = (byte) (i + 1)) {
- for (byte j = -1; j < 2; j = (byte) (j + 1)) {
- for (byte k = 0; k < 5; k = (byte) (k + 1)) {
- if (j == 0 && i ==0)
- k = 4;
- Block aBlock = this.getBaseMetaTileEntity().getBlock(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- int aMeta = this.getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- IGregTechTileEntity aTile = this.getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(), getCasingMeta())) {
- log("Bad Casing on Extruder.");
- return false;
- }
- else {
- if (aTile == null) {
- aCasingCount++;
- }
- }
- }
- }
- }
- if ((this.mInputBusses.size() == 0) || (this.mOutputBusses.size() == 0)) {
- log("Incorrect amount of Input || Output busses.");
- return false;
- }
- if ((this.mMaintenanceHatches.size() != 1)) {
- log("Incorrect amount of Maintenance hatches.");
- return false;
- }
- } else {
- log("False 5");
- return false;
- }
-
-
-
- log("True");
- return aCasingCount >= 28;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
@@ -235,7 +254,6 @@ extends GregtechMeta_MultiBlockBase {
return ModBlocks.blockCasings3Misc;
}
-
public byte getCasingMeta() {
return 1;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java
index 9d349109ac..5c5ec5cf15 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMacerator.java
@@ -2,27 +2,33 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import java.util.Random;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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_OutputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_IndustrialMacerator
extends GregtechMeta_MultiBlockBase {
- private static boolean controller;
+ private int mCasing;
+ private int mPerLayer;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialMacerator> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialMacerator(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -43,21 +49,131 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Maceration Stack",
- "60% faster than using single block machines of the same voltage",
- //"Increased output chances on % outputs",
- "Processes 8*tier materials at a time",
- "ULV = Tier 0, LV = Tier 1, etc.",
- "-------------------------------------------------------",
- "Size[WxHxL]: 3x6x3 (Hollow)",
- "Maceration Stack Casings (26 at least!)",
- "Controller (Center Bottom)",
- "1x Input Bus (Any bottom layer casing)",
- "5x Output Bus (One per layer except bottom layer)",
- "1x Energy Hatch (Any bottom layer casing)",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Maceration Stack")
+ .addInfo("60% faster than using single block machines of the same voltage")
+ .addInfo("Processes 8*tier materials at a time")
+ .addInfo("ULV = Tier 0, LV = Tier 1, etc.")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 6, 3, true)
+ .addController("Bottom Center")
+ .addCasingInfo("Maceration Stack Casings", 26)
+ .addInputBus("Bottom Casing", 1)
+ .addEnergyHatch("Bottom Casing", 1)
+ .addMaintenanceHatch("Bottom Casing", 1)
+ .addOutputBus("One per layer except bottom layer", 2)
+ .addMufflerHatch("Any Casing", 2)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialMacerator> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialMacerator>builder()
+ .addShape(mName + "top", transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addShape(mName + "mid", transpose(new String[][]{
+ {"CCC", "C-C", "CCC"},
+ }))
+ .addShape(mName + "bottom", transpose(new String[][]{
+ {"B~B", "BBB", "BBB"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialMacerator::addIndustrialMaceratorMidList, TAE.GTPP_INDEX(7), 2
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 7
+ )
+ )
+ )
+ )
+ .addElement(
+ 'B',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialMacerator::addIndustrialMaceratorBottomList, TAE.GTPP_INDEX(7), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 7
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName + "bottom", stackSize, hintsOnly, 1, 0, 0);
+ buildPiece(mName + "mid", stackSize, hintsOnly, 1, 1, 0);
+ buildPiece(mName + "mid", stackSize, hintsOnly, 1, 2, 0);
+ buildPiece(mName + "mid", stackSize, hintsOnly, 1, 3, 0);
+ buildPiece(mName + "mid", stackSize, hintsOnly, 1, 4, 0);
+ buildPiece(mName + "top", stackSize, hintsOnly, 1, 5, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mPerLayer = 0;
+ if (checkPiece(mName + "bottom", 1, 0 ,0)) {
+ while (mPerLayer < 4) {
+ if (!checkPiece(mName + "mid", 1, mPerLayer + 1, 0) ||
+ mPerLayer + 1 != mOutputBusses.size()) return false;
+ mPerLayer ++;
+ }
+ return checkPiece(mName + "top", 1, 5, 0) && mOutputBusses.size() == 5 && mCasing >= 26 && checkHatch();
+ }
+ return false;
+ }
+
+ public final boolean addIndustrialMaceratorBottomList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ public final boolean addIndustrialMaceratorMidList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -88,16 +204,6 @@ extends GregtechMeta_MultiBlockBase {
return GT_Recipe.GT_Recipe_Map.sMaceratorRecipes;
}
- /*@Override
- public boolean isCorrectMachinePart(ItemStack aStack) {
- return true;
- }*/
-
- @Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
@Override
public void onPreTick(final IGregTechTileEntity aBaseMetaTileEntity, final long aTick) {
super.onPreTick(aBaseMetaTileEntity, aTick);
@@ -130,69 +236,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 1, zDir)) {
- return false;
- }
- int tAmount = 0;
- controller = false;
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- for (int h = 0; h < 6; h++) {
- if (!((i == 0) && (j == 0) && ((h > 0) && (h < 5))))//((h > 0)&&(h<5)) || (((xDir + i != 0) || (zDir + j != 0)) && ((i != 0) || (j != 0)))
- {
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j);
- if ((!this.addMaintenanceToMachineList(tTileEntity, TAE.GTPP_INDEX(7))) &&(!this.addMufflerToMachineList(tTileEntity, TAE.GTPP_INDEX(7))) && (!this.addInputToMachineList(tTileEntity, TAE.GTPP_INDEX(7))) && (!this.addOutputToMachineList(tTileEntity, TAE.GTPP_INDEX(7))) && (!this.addEnergyInputToMachineList(tTileEntity, TAE.GTPP_INDEX(7))) && (!this.ignoreController(aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j)))) {
- if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) {
- Logger.INFO("Returned False 1");
- return false;
- }
- if (aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j) != 7) {
- Logger.INFO("Returned False 2");
- return false;
- }
- tAmount++;
- }
- }
- }
- }
- }
- if ((this.mOutputHatches.size() != 0) ||(this.mMufflerHatches.size() == 0) || (this.mInputBusses.size() != 1) || (this.mOutputBusses.size() != 5)) {
- Logger.INFO("Returned False 3");
- return false;
- }
- final int height = this.getBaseMetaTileEntity().getYCoord();
- if (this.mInputBusses.get(0).getBaseMetaTileEntity().getYCoord() != height) {
- Logger.INFO("height: "+height+" | Returned False 4");
- return false;
- }
- final GT_MetaTileEntity_Hatch_OutputBus[] tmpHatches = new GT_MetaTileEntity_Hatch_OutputBus[5];
- for (int i = 0; i < this.mOutputBusses.size(); i++) {
- final int hatchNumber = this.mOutputBusses.get(i).getBaseMetaTileEntity().getYCoord() - 1 - height;
- if (tmpHatches[hatchNumber] == null) {
- tmpHatches[hatchNumber] = this.mOutputBusses.get(i);
- } else {
- Logger.INFO("Returned False 5");
- return false;
- }
- }
- this.mOutputBusses.clear();
- for (int i = 0; i < tmpHatches.length; i++) {
- this.mOutputBusses.add(tmpHatches[i]);
- }
- return tAmount >= 24;
- }
-
- public boolean ignoreController(final Block tTileEntity) {
- if (!controller && (tTileEntity == GregTech_API.sBlockMachines)) {
- return true;
- }
- return false;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMixer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMixer.java
index 468567bfe1..99d6ec5b1c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMixer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMixer.java
@@ -2,34 +2,40 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import java.util.ArrayList;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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_InputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.util.data.ArrayUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialMixer
extends GregtechMeta_MultiBlockBase {
public static int CASING_TEXTURE_ID;
public static String mCasingName = "Advanced Blast Furnace Casing";
public static String mCasingName2 = "Advanced Blast Furnace Casing";
-
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialMixer> STRUCTURE_DEFINITION = null;
+
+
public GregtechMetaTileEntity_IndustrialMixer(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
CASING_TEXTURE_ID = TAE.getIndexFromPage(2, 2);
@@ -55,27 +61,112 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
-
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+
if (mCasingName.toLowerCase().contains(".name")) {
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings3Misc, 2);
}
if (mCasingName2.toLowerCase().contains(".name")) {
mCasingName2 = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockCasings4, 11);
}
-
- return new String[]{
- "Controller Block for the Industrial Mixer",
- "250% faster than using single block machines of the same voltage",
- "Processes eight recipes per voltage tier",
- "Size: 3x4x3 (LxHxW)",
- mCasingName+"s (16 at least!)",
- mCasingName2+"s for the internal blocks (2)",
- "Controller (front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch",
- };
+
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Mixer")
+ .addInfo("250% faster than using single block machines of the same voltage")
+ .addInfo("Processes eight recipes per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 4, 3, false)
+ .addController("Second Layer Center")
+ .addCasingInfo(mCasingName, 16)
+ .addCasingInfo(mCasingName2, 2)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialMixer> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialMixer>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"CCC", "CMC", "CCC"},
+ {"C~C", "CMC", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialMixer::addIndustrialMixerList, CASING_TEXTURE_ID, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 2
+ )
+ )
+ )
+ )
+ .addElement(
+ 'M',
+ ofBlock(
+ GregTech_API.sBlockCasings4, 11
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 2, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 2, 0) && mCasing >= 16 && checkHatch();
+ }
+
+ public final boolean addIndustrialMixerList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -107,11 +198,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
for (GT_MetaTileEntity_Hatch_InputBus tBus : mInputBusses) {
ArrayList<ItemStack> tBusItems = new ArrayList<ItemStack>();
@@ -156,57 +242,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
-
- int tAmount = 0;
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- for (int h = -1; h < 3; h++) {
- if ((h != 0) || ((((xDir + i) != 0) || ((zDir + j) != 0)) && ((i != 0) || (j != 0)))) {
-
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j);
- final Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
- final byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
-
- if (h == 0 || h == 1) {
- if (i == 0 && j == 0){
- if (!isValidBlockForStructure(tTileEntity, CASING_TEXTURE_ID, false, tBlock, tMeta, GregTech_API.sBlockCasings4, 11)) {
- Logger.INFO("Inner casings missing");
- return false;
- }
- else {
- tAmount++;
- }
- }
- else {
- if (!isValidBlockForStructure(tTileEntity, CASING_TEXTURE_ID, true, tBlock, tMeta, ModBlocks.blockCasings3Misc, 2)) {
- Logger.INFO("Middle layer casings missing");
- return false;
- }
- else {
- tAmount++;
- }
- }
- }
- else {
- if (!isValidBlockForStructure(tTileEntity, CASING_TEXTURE_ID, true, tBlock, tMeta, ModBlocks.blockCasings3Misc, 2)) {
- Logger.INFO("Top Or Bottom casings missing");
- return false;
- }
- else {
- tAmount++;
- }
- }
- }
- }
- }
- }
- return tAmount >= 16;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java
index c83754bb73..a06d3880a7 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java
@@ -1,45 +1,36 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.*;
import org.apache.commons.lang3.ArrayUtils;
-import gregtech.api.enums.Element;
-import gregtech.api.enums.GT_Values;
-import gregtech.api.enums.ItemList;
-import gregtech.api.enums.Materials;
-import gregtech.api.enums.OrePrefixes;
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_InputBus;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.GT_LanguageManager;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
-import gregtech.common.items.behaviors.Behaviour_DataOrb;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
public class GregtechMetaTileEntity_IndustrialMultiMachine
@@ -58,7 +49,9 @@ extends GregtechMeta_MultiBlockBase {
private static final int MODE_FLUIDSOLIDIFY = 8;
private static final int[][] MODE_MAP = new int[][] {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}};
public static final String[] aToolTipNames = new String[9];
-
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialMultiMachine> STRUCTURE_DEFINITION = null;
+
static {
for (int id = 0; id < 9; id++) {
String aNEI = GT_LanguageManager.getTranslation(getRecipeMap(id).mUnlocalizedName);
@@ -85,24 +78,108 @@ extends GregtechMeta_MultiBlockBase {
return "Nine in One";
}
-
@Override
- public String[] getTooltip() {
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+
String[] aBuiltStrings = new String[3];
aBuiltStrings[0] = aToolTipNames[0] + ", " + aToolTipNames[1] + ", " + aToolTipNames[2];
aBuiltStrings[1] = aToolTipNames[3] + ", " + aToolTipNames[4] + ", " + aToolTipNames[5];
- aBuiltStrings[2] = aToolTipNames[6] + ", " + aToolTipNames[7];
- return new String[]{"Controller Block for the Industrial Multi-Machine",
- "250% faster than using single block machines of the same voltage",
- "Only uses 80% of the eu/t normally required",
- "Processes two items per voltage tier",
- "Size: 3x3x3 (Hollow)",
- "Controller (front centered)",
- "6 Multi-Use casings required (Minimum)",
- "Read Multi-Machine Manual for extra information",
- "Machine Type: [A] - " + EnumChatFormatting.YELLOW + aBuiltStrings[0] + EnumChatFormatting.RESET,
- "Machine Type: [B] - " + EnumChatFormatting.YELLOW + aBuiltStrings[1] + EnumChatFormatting.RESET,
- "Machine Type: [C] - " + EnumChatFormatting.YELLOW + aBuiltStrings[2] + EnumChatFormatting.RESET};
+ aBuiltStrings[2] = aToolTipNames[6] + ", " + aToolTipNames[7];
+
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Multi-Machine")
+ .addInfo("250% faster than using single block machines of the same voltage")
+ .addInfo("Only uses 80% of the eu/t normally required")
+ .addInfo("Processes two items per voltage tier")
+ .addInfo("Machine Type: [A] - " + EnumChatFormatting.YELLOW + aBuiltStrings[0] + EnumChatFormatting.RESET)
+ .addInfo("Machine Type: [B] - " + EnumChatFormatting.YELLOW + aBuiltStrings[1] + EnumChatFormatting.RESET)
+ .addInfo("Machine Type: [C] - " + EnumChatFormatting.YELLOW + aBuiltStrings[2] + EnumChatFormatting.RESET)
+ .addInfo("Read Multi-Machine Manual for extra information")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Multi-Use Casings", 6)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialMultiMachine> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialMultiMachine>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialMultiMachine::addIndustrialMultiMachineList, getTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 2
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 6 && checkHatch();
+ }
+
+ public final boolean addIndustrialMultiMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -124,11 +201,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
ArrayList<FluidStack> tFluids = getStoredFluids();
//Logger.MACHINE_INFO("1");
@@ -178,40 +250,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final 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, getTextureIndex(), true, aBlock, aMeta,
- ModBlocks.blockCasings3Misc, 2)) {
- Logger.INFO("Bad casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
- }
- return tAmount >= 6;
- }
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java
index 4d3cba9161..ce737c5fcb 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialPlatePress.java
@@ -2,32 +2,37 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import java.util.ArrayList;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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_InputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialPlatePress extends GregtechMeta_MultiBlockBase {
private boolean mFormingMode = false;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialPlatePress> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialPlatePress(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -48,20 +53,90 @@ public class GregtechMetaTileEntity_IndustrialPlatePress extends GregtechMeta_Mu
}
@Override
- public String[] getTooltip() {
- return new String[]{"Controller Block for Advanced Bending & Forming",
- "Can be configured with a screwdriver to activate Forming Press Mode",
- "500% faster than using single block machines of the same voltage",
- "Processes four items per voltage tier",
- "Circuit for recipe goes in the Input Bus",
- "Each Input Bus can have a different Circuit/Shape!",
- "Size: 3x3x3 (Hollow)",
- "Material Press Machine Casings (10 at least!)",
- "Controller (front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for Advanced Bending & Forming")
+ .addInfo("500% faster than using single block machines of the same voltage")
+ .addInfo("Processes four items per voltage tier")
+ .addInfo("Circuit for recipe goes in the Input Bus")
+ .addInfo("Each Input Bus can have a different Circuit/Shape!")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Material Press Machine Casings", 10)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialPlatePress> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialPlatePress>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialPlatePress::addIndustrialPlatePressList, 50, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 4
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 && checkHatch();
+ }
+
+ public final boolean addIndustrialPlatePressList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -93,11 +168,6 @@ public class GregtechMetaTileEntity_IndustrialPlatePress extends GregtechMeta_Mu
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
for (GT_MetaTileEntity_Hatch_InputBus tBus : mInputBusses) {
ArrayList<ItemStack> tBusItems = new ArrayList<ItemStack>();
@@ -131,39 +201,6 @@ public class GregtechMetaTileEntity_IndustrialPlatePress extends GregtechMeta_Mu
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final 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, 50, true, aBlock, aMeta,
- ModBlocks.blockCasingsMisc, 4)) {
- Logger.INFO("Bad material press casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
- }
- return tAmount >= 10;
- }
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSifter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSifter.java
index 01edbba2aa..c0cfe1a92c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSifter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSifter.java
@@ -2,26 +2,32 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import java.util.Random;
-import gregtech.api.GregTech_API;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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_OutputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialSifter
extends GregtechMeta_MultiBlockBase {
- private boolean controller;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialSifter> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialSifter(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -42,21 +48,96 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Sifter",
- "400% faster than single-block machines of the same voltage",
- "Only uses 75% of the eu/t normally required",
- "Processes four items per voltage tier",
- //"Increased output chances on % outputs",
- "Size[WxHxL]: 5x3x5",
- "Controller (Center Bottom)",
- "1x Input Bus (Any top or bottom edge casing)",
- "4x Output Bus (Any top or bottom edge casing)",
- "1x Energy Hatch (Any top or bottom edge casing)",
- "18x Sieve Grate (Top and Middle 3x3)",
- "Sieve Casings for the rest (35 min)"
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Sifter")
+ .addInfo("400% faster than single-block machines of the same voltage")
+ .addInfo("Only uses 75% of the eu/t normally required")
+ .addInfo("Processes four items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(5, 3, 5, false)
+ .addController("Bottom Center")
+ .addCasingInfo("Sieve Grate", 18)
+ .addCasingInfo("Sieve Casings", 35)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialSifter> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialSifter>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCCCC", "CMMMC", "CMMMC", "CMMMC", "CCCCC"},
+ {"CCCCC", "CMMMC", "CMMMC", "CMMMC", "CCCCC"},
+ {"CC~CC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialSifter::addIndustrialSifterList, TAE.GTPP_INDEX(21), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 5
+ )
+ )
+ )
+ )
+ .addElement(
+ 'M',
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 6
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 2, 2, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 2, 2, 0) && mCasing >= 35 && mOutputBusses.size() >= 4 && checkHatch();
+ }
+
+ public final boolean addIndustrialSifterList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -82,16 +163,6 @@ extends GregtechMeta_MultiBlockBase {
return GT_Recipe.GT_Recipe_Map.sSifterRecipes;
}
- /*@Override
- public boolean isCorrectMachinePart(ItemStack aStack) {
- return true;
- }*/
-
- @Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
@Override
public void onPreTick(final IGregTechTileEntity aBaseMetaTileEntity, final long aTick) {
super.onPreTick(aBaseMetaTileEntity, aTick);
@@ -132,114 +203,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- log("Checking structure for Industrial Sifter.");
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 2;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 2;
-
- int tAmount = 0;
- this.controller = false;
- for (int i = -2; i < 3; i++) {
- for (int j = -2; j < 3; j++) {
- for (int h = 0; h < 3; h++) {
-
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j);
-
- String sHeight = "";
- if (h == 2){
- sHeight = "top";
- }
- else if (h == 1){
- sHeight = "middle";
- }
- else {
- sHeight = "bottom";
- }
-
- // Sifter Floor/Roof inner 3x3
- if (((i != -2) && (i != 2)) && ((j != -2) && (j != 2))) {
- if (h != 0){
-
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(21), false, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasings2Misc, 6)) {
- log("Sifter Casing(s) Missing from one of the "+sHeight+" layers inner 3x3.");
- log("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName());
- return false;
- }
-
- }
- else {
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(21), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasings2Misc, 5)) {
- log("Sifter Casing(s) Missing from one of the "+sHeight+" layers inner 3x3.");
- log("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName());
- return false;
- }
- tAmount++;
- }
- }
- else {
- //Dealt with inner 5x5, now deal with the exterior.
- //Deal with all 4 sides (Sifter walls)
- boolean checkController = false;
- if (!checkController){
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(21), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasings2Misc, 5)) {
- if ((tTileEntity instanceof GregtechMetaTileEntity_IndustrialSifter) || (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) == GregTech_API.sBlockMachines)){
- if (h != 0){
- log("Found a secondary controller at the wrong Y level.");
- return false;
- }
- }
- else {
- log("Sifter Casings Missing from somewhere in the "+sHeight+" layer edge.");
- log("Instead, found "+aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j).getLocalizedName());
- return false;
- }
- }
- }
- tAmount++;
-
- }
- }
- }
- }
- if ((this.mInputBusses.size() < 1) || (this.mOutputBusses.size() < 4)
- || (this.mMaintenanceHatches.size() != 1) || (this.mEnergyHatches.size() < 1)) {
- log("Returned False 3");
- log("Input Buses: "+this.mInputBusses.size()+" | expected: 1");
- log("Output Buses: "+this.mOutputBusses.size()+" | expected: 4");
- log("Energy Hatches: "+this.mEnergyHatches.size()+" | expected: 1");
- log("Maint. hatches: "+this.mMaintenanceHatches.size()+" | expected: 1");
- return false;
- }
- final int height = this.getBaseMetaTileEntity().getYCoord();
-
- final GT_MetaTileEntity_Hatch_OutputBus[] tmpHatches = new GT_MetaTileEntity_Hatch_OutputBus[4];
- for (int i = 0; i < this.mOutputBusses.size(); i++) {
- final int hatchNumber = this.mOutputBusses.get(i).getBaseMetaTileEntity().getYCoord() - 1 - height;
- if (tmpHatches[i] == null) {
- tmpHatches[i] = this.mOutputBusses.get(i);
- } else {
- log("Returned False 5 - "+this.mOutputBusses.size());
- return false;
- }
- }
- this.mOutputBusses.clear();
- for (int i = 0; i < tmpHatches.length; i++) {
- this.mOutputBusses.add(tmpHatches[i]);
- }
-
- log("Industrial Sifter - Structure Built? "+(tAmount>=35));
-
- return tAmount >= 35;
- }
-
- public boolean ignoreController(final Block tTileEntity) {
- if (!this.controller && (tTileEntity == GregTech_API.sBlockMachines)) {
- return true;
- }
- return false;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSinter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSinter.java
index b552a0f383..5a62c6c335 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSinter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialSinter.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import java.util.ArrayList;
@@ -264,3 +265,4 @@ extends GT_MetaTileEntity_MultiBlockBase {
return ((this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex())));
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialThermalCentrifuge.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialThermalCentrifuge.java
index 2187414d53..41002d5528 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialThermalCentrifuge.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialThermalCentrifuge.java
@@ -1,24 +1,34 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_IndustrialThermalCentrifuge
extends GregtechMeta_MultiBlockBase {
+
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialThermalCentrifuge> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_IndustrialThermalCentrifuge(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -38,21 +48,111 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Thermal Centrifuge",
- "150% faster than using single block machines of the same voltage",
- "Only uses 80% of the eu/t normally required",
- "Processes eight items per voltage tier",
- "Size: 3x2x3 [WxHxL]",
- "Thermal processing Casings (8 at least!)",
- "Noise Hazard Sign Blocks also count as valid casings",
- "Controller (front centered, top layer)",
- "1x Input Bus (Any bottom layer casing)",
- "1x Output Bus (Any bottom layer casing)",
- "1x Energy Hatch (Any bottom layer casing)",
-
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Thermal Centrifuge")
+ .addInfo("150% faster than using single block machines of the same voltage")
+ .addInfo("Only uses 80% of the eu/t normally required")
+ .addInfo("Processes eight items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 2, 3, false)
+ .addController("Front Center")
+ .addCasingInfo("Thermal Processing Casings/Noise Hazard Sign Blocks", 8)
+ .addInputBus("Bottom Casing", 1)
+ .addOutputBus("Bottom Casing", 1)
+ .addEnergyHatch("Bottom Casing", 1)
+ .addMaintenanceHatch("Bottom Casing", 1)
+ .addMufflerHatch("Bottom Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialThermalCentrifuge> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialThermalCentrifuge>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"X~X", "XXX", "XXX"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialThermalCentrifuge::addIndustrialThermalCentrifugeList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 0
+ )
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ GregTech_API.sBlockCasings3, 9
+ )
+ )
+ )
+ )
+ .addElement(
+ 'X',
+ ofChain(
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 0
+ )
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ GregTech_API.sBlockCasings3, 9
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 0, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 0, 0) && mCasing >= 8 && checkHatch();
+ }
+
+ public final boolean addIndustrialThermalCentrifugeList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -79,11 +179,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric((8* GT_Utility.getTier(this.getMaxInputVoltage())), 80, 150);
}
@@ -99,45 +194,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- /*if (!(aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir))) {
- return false;
- }*/
- int tAmount = 0;
- for (int i = -1; i < 2; ++i) {
- for (int j = -1; j < 2; ++j) {
- for (int h = -1; h < 1; ++h) {
- if ((xDir + i == 0) && (zDir + j == 0) && (h == 0)) continue; // controller block
-
- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h,
- zDir + j);
-
- Logger.INFO("------------------");
- Logger.INFO("xDir: " + xDir + " | zDir: " + zDir);
- Logger.INFO("i: " + i + " | j: " + j + " | h: " + h);
- if ((h == 0) || !addToMachineList(tTileEntity)) { // only bottom layer allows machine parts
- // top layer, or not machine part, must be casing
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
- byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
- if ((((tBlock != ModBlocks.blockCasings2Misc) || (tMeta != 0)))
- && (((tBlock != GregTech_API.sBlockCasings3) || (tMeta != 9)))) {
- Logger.INFO("Wrong Block?");
- return false;
- }
- tAmount++;
- }
- }
-
- }
- }
- Logger.INFO("------------------");
- Logger.WARNING("Trying to assemble structure. Completed? "+(tAmount >= 8));
- return (tAmount >= 8);
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
@@ -161,22 +217,12 @@ extends GregtechMeta_MultiBlockBase {
return ModBlocks.blockCasings2Misc;
}
-
public byte getCasingMeta() {
return 0;
}
-
public byte getCasingTextureIndex() {
return (byte) TAE.GTPP_INDEX(16);
}
- private boolean addToMachineList(final IGregTechTileEntity tTileEntity) {
- return ((this.addMaintenanceToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addInputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addOutputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addMufflerToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addDynamoToMachineList(tTileEntity, this.getCasingTextureIndex())));
- }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java
index 13727e8063..56e1b65a85 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java
@@ -1,5 +1,7 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.GregTech_API;
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
@@ -7,20 +9,24 @@ import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GTPP_Recipe;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GT_MetaTileEntity_Hatch_CustomFluidBase;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta_MultiBlockBase {
public static int CASING_TEXTURE_ID;
@@ -28,6 +34,10 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
public static String mCasingName = "Advanced Cryogenic Casing";
public static String mHatchName = "Cryotheum Hatch";
public static FluidStack mFuelStack;
+ private boolean mHaveHatch;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialVacuumFreezer> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_IndustrialVacuumFreezer(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -56,8 +66,9 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
return "Vacuum Freezer";
}
- public String[] getTooltip() {
-
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+
if (mCasingName.toLowerCase().contains(".name")) {
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings3Misc, 10);
}
@@ -67,18 +78,106 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
if (mHatchName.toLowerCase().contains(".name")) {
mHatchName = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockMachines, 967);
}
-
- return new String[]{
- "Factory Grade Advanced Vacuum Freezer",
- "Speed: 200% | Eu Usage: 100% | Parallel: 4",
- "Consumes 1L of "+mCryoFuelName+"/t during operation",
- "Constructed exactly the same as a normal Vacuum Freezer",
- "Use "+mCasingName+"s (10 at least!)",
- "1x " + mHatchName + " (Required)",
- "TAG_HIDE_HATCHES"
- };
+
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Factory Grade Advanced Vacuum Freezer")
+ .addInfo("Speed: 200% | Eu Usage: 100% | Parallel: 4")
+ .addInfo("Consumes 1L of " + mCryoFuelName + "/t during operation")
+ .addInfo("Constructed exactly the same as a normal Vacuum Freezer")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo(mCasingName, 10)
+ .addStructureHint(mHatchName, 1)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialVacuumFreezer> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialVacuumFreezer>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialVacuumFreezer::addIndustrialVacuumFreezerList, CASING_TEXTURE_ID, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 10
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mHaveHatch = false;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 && mHaveHatch && checkHatch();
+ }
+
+ public final boolean addIndustrialVacuumFreezerList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_CustomFluidBase && aMetaTileEntity.getBaseMetaTileEntity().getMetaTileID() == 967) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ mHaveHatch = true;
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
+
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing,
final byte aColorIndex, final boolean aActive, final boolean aRedstone) {
if (aSide == aFacing) {
@@ -111,10 +210,6 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
return true;
}
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
public boolean checkRecipe(final ItemStack aStack) {
return this.checkRecipeGeneric(4, 100, 100);
}
@@ -129,37 +224,6 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
return 100;
}
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final 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, CASING_TEXTURE_ID, true, aBlock, aMeta,
- ModBlocks.blockCasings3Misc, 10)) {
- Logger.INFO("Bad centrifuge casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
- }
- return tAmount >= 10;
- }
- }
-
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java
index 733256788a..6b425fd534 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWashPlant.java
@@ -1,16 +1,20 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
@@ -26,10 +30,16 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialWashPlant
extends GregtechMeta_MultiBlockBase {
private boolean mChemicalMode = false;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialWashPlant> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialWashPlant(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -50,25 +60,100 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Ore Washing Plant",
- "Can be configured with a screwdriver to also process Chemical Bathing",
- "400% faster than using single block machines of the same voltage",
- "Processes four item per voltage tier",
- "Always requires an Input Hatch full of water to refill structure",
- "Size: 5x3x7 [WxHxL] (open)",
- "X X",
- "X X",
- "XXXXX",
- "Controller (front centered)",
- "1x Input Bus (Any casing)",
- "2x Input Hatch (Any casing)",
- "1x Output Bus (Any casing)",
- "1x Energy Hatch (Any casing)",
- "Wash Plant Casings for the rest"
-
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Ore Washing Plant")
+ .addInfo("Can be configured with a screwdriver to also process Chemical Bathing")
+ .addInfo("400% faster than using single block machines of the same voltage")
+ .addInfo("Processes four item per voltage tier")
+ .addInfo("Always requires an Input Hatch full of water to refill structure")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(5, 3, 7, true)
+ .addController("Front Center")
+ .addCasingInfo("Wash Plant Casings", 40)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialWashPlant> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialWashPlant>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCCCC", "C C", "C C", "C C", "C C", "C C", "CCCCC"},
+ {"CC~CC", "C C", "C C", "C C", "C C", "C C", "CCCCC"},
+ {"CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialWashPlant::addIndustrialWashPlantList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 2, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 2, 1, 0) && mCasing >= 40 && checkHatch();
+ }
+
+ public final boolean addIndustrialWashPlantList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected IAlignmentLimits getInitialAlignmentLimits() {
+ // don't rotate a washer, water will flow out.
+ return (d, r, f) -> d.offsetY == 0 && r.isNotRotated() && !f.isVerticallyFliped();
}
@Override
@@ -95,16 +180,9 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
if (checkForWater()) {
- if (checkRecipeGeneric((4* GT_Utility.getTier(this.getMaxInputVoltage())), 100, 400)) {
- return addSludge();
- }
+ return checkRecipeGeneric((4 * GT_Utility.getTier(this.getMaxInputVoltage())), 100, 400);
}
return false;
}
@@ -120,94 +198,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
-
- //Get Facing direction
- int mDirectionX = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
-
- int mCurrentDirectionX;
- int mCurrentDirectionZ;
- int mOffsetX_Lower = 0;
- int mOffsetX_Upper = 0;
- int mOffsetZ_Lower = 0;
- int mOffsetZ_Upper = 0;
-
-
- Logger.WARNING("mDirectionX "+(mDirectionX));
- if (mDirectionX == 0){
- mCurrentDirectionX = 2;
- mCurrentDirectionZ = 3;
- mOffsetX_Lower = -2;
- mOffsetX_Upper = 2;
- mOffsetZ_Lower = -3;
- mOffsetZ_Upper = 3;
- Logger.WARNING("Controler is facing Z direction.");
- }
- else {
- mCurrentDirectionX = 3;
- mCurrentDirectionZ = 2;
- mOffsetX_Lower = -3;
- mOffsetX_Upper = 3;
- mOffsetZ_Lower = -2;
- mOffsetZ_Upper = 2;
- Logger.WARNING("Controler is facing X direction.");
- }
-
- //if (aBaseMetaTileEntity.fac)
-
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * mCurrentDirectionX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * mCurrentDirectionZ;
-
- Logger.WARNING("xDir"+(xDir));
- Logger.WARNING("zDir"+(zDir));
- /*if (!(aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir))) {
- return false;
- }*/
- int tAmount = 0;
- for (int i = mOffsetX_Lower; i <=mOffsetX_Upper; ++i) {
- for (int j = mOffsetZ_Lower; j <= mOffsetZ_Upper; ++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);
- if (!addToMachineList(tTileEntity)) {
- Logger.WARNING("X: "+i+" | Z: "+j);
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
- byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
- if ((tBlock == getCasingBlock()) && (tMeta == getCasingMeta())) {
- ++tAmount;
- }
- else {
- if ((i != mOffsetX_Lower && j != mOffsetZ_Lower
- && i != mOffsetX_Upper && j != mOffsetZ_Upper) && (h == 0 || h == 1)){
- if (tBlock == Blocks.air){
- Logger.WARNING("Found Air");
- }
- else if (tBlock == Blocks.water){
- Logger.WARNING("Found Water");
- }
- }
- else {
- Logger.WARNING("[x] Did not form - Found: "+tBlock.getLocalizedName() + " | "+tBlock.getDamageValue(aBaseMetaTileEntity.getWorld(), aBaseMetaTileEntity.getXCoord()+ i, aBaseMetaTileEntity.getYCoord(), aBaseMetaTileEntity.getZCoord() + j));
- Logger.WARNING("[x] Did not form - Found: "+(aBaseMetaTileEntity.getXCoord()+xDir + i) +" | "+ aBaseMetaTileEntity.getYCoord()+" | "+ (aBaseMetaTileEntity.getZCoord()+zDir + j));
- return false;
- }
- }
- }
- }
- }
- }
- }
- if ((tAmount >= 40)){
- Logger.WARNING("Made structure.");
- }
- else {
- Logger.WARNING("Did not make structure.");
- }
- return (tAmount >= 40);
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
@@ -241,15 +231,6 @@ extends GregtechMeta_MultiBlockBase {
return (byte) TAE.GTPP_INDEX(11);
}
- private boolean addToMachineList(final IGregTechTileEntity tTileEntity) {
- return ((this.addMaintenanceToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addInputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addOutputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addMufflerToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addDynamoToMachineList(tTileEntity, this.getCasingTextureIndex())));
- }
-
public boolean checkForWater() {
//Get Facing direction
@@ -332,25 +313,6 @@ extends GregtechMeta_MultiBlockBase {
return (tAmount >= 45);
}
- public boolean addSludge() {
- /*if (MathUtils.randInt(0, 100) <= 4) {
- if (this.mOutputHatches.size() > 0) {
- for (GT_MetaTileEntity_Hatch_Output h : this.mOutputHatches) {
- if (h.getFluid() == null || h.getFluid().isFluidEqual(FluidUtils.getFluidStack(DarkWorldContentLoader.SLUDGE, 1000))) {
- FluidStack current = h.mFluid;
- if (current == null) {
- h.mFluid = FluidUtils.getFluidStack(DarkWorldContentLoader.SLUDGE, 1000);
- }
- else {
- h.mFluid.amount += 1000;
- }
- }
- }
- }
- } */
- return true;
- }
-
@Override
public void saveNBTData(NBTTagCompound aNBT) {
aNBT.setBoolean("mChemicalMode", mChemicalMode);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java
index c6b52a8222..154cfb0f01 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java
@@ -1,12 +1,16 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.core.block.ModBlocks;
@@ -15,8 +19,16 @@ import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_IndustrialWireMill
extends GregtechMeta_MultiBlockBase {
+
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialWireMill> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_IndustrialWireMill(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -36,20 +48,89 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Industrial Wire Factory",
- "200% faster than using single block machines of the same voltage",
- "Only uses 75% of the eu/t normally required",
- "Processes four items per voltage tier",
- "Size: 3x3x5 [WxHxL] (Hollow)",
- "Wire Factory Casings (32 at least!)",
- "Controller (front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch",
- //"Maintenance Hatch must be at the back, centered",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Industrial Wire Factory")
+ .addInfo("200% faster than using single block machines of the same voltage")
+ .addInfo("Only uses 75% of the eu/t normally required")
+ .addInfo("Processes four items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 5, true)
+ .addController("Front Center")
+ .addCasingInfo("Wire Factory Casings", 32)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialWireMill> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialWireMill>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "C-C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialWireMill::addIndustrialWireMillList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 32 && checkHatch();
+ }
+
+ public final boolean addIndustrialWireMillList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -81,11 +162,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric((4* GT_Utility.getTier(this.getMaxInputVoltage())), 75, 200);
}
@@ -101,78 +177,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final byte tSide = this.getBaseMetaTileEntity().getBackFacing();
- int aCasingCount = 0;
- if ((this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 1)) && (this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 2) && (this.getBaseMetaTileEntity().getAirAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 3)))) {
- for (byte i = 2; i < 6; i = (byte) (i + 1)) {
- IGregTechTileEntity tTileEntity;
- if ((null != (tTileEntity = this.getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(i, 2))) &&
- (tTileEntity.getFrontFacing() == this.getBaseMetaTileEntity().getFrontFacing()) && (tTileEntity.getMetaTileEntity() != null) &&
- ((tTileEntity.getMetaTileEntity() instanceof GregtechMetaTileEntity_IndustrialWireMill))) {
- //Utils.LOG_INFO("False 1");
- return false;
- }
- }
-
- //Check Rear Middle
- {
- Block aBlock = this.getBaseMetaTileEntity()
- .getBlockAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- int aMeta = this.getBaseMetaTileEntity()
- .getMetaIDAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- IGregTechTileEntity aTile = this.getBaseMetaTileEntity()
- .getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(),
- getCasingMeta())) {
- log("Bad Casing on Wiremill.");
- return false;
- }
- }
- final int tX = this.getBaseMetaTileEntity().getXCoord();
- final int tY = this.getBaseMetaTileEntity().getYCoord();
- final int tZ = this.getBaseMetaTileEntity().getZCoord();
- for (byte i = -1; i < 2; i = (byte) (i + 1)) {
- for (byte j = -1; j < 2; j = (byte) (j + 1)) {
- if ((i != 0) || (j != 0)) {
- for (byte k = 0; k < 5; k = (byte) (k + 1)) {
- Block aBlock = this.getBaseMetaTileEntity().getBlock(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- int aMeta = this.getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- IGregTechTileEntity aTile = this.getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
- if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(), getCasingMeta())) {
- log("Bad Casing on Wiremill.");
- return false;
- }
- else {
- if (aTile == null) {
- aCasingCount++;
- }
- }
- }
- }
- }
- }
- if ((this.mOutputHatches.size() != 0) || (this.mInputHatches.size() != 0)) {
- log("Use Busses, Not Hatches for Input/Output.");
- return false;
- }
- if ((this.mInputBusses.size() == 0) || (this.mOutputBusses.size() == 0)) {
- log("Incorrect amount of Input & Output busses.");
- return false;
- }
- if ((this.mMaintenanceHatches.size() != 1)) {
- log("Incorrect amount of Maintenance or Energy hatches.");
- return false;
- }
- } else {
- log("False 5");
- return false;
- }
- log("True");
- return aCasingCount >= 32;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
@@ -196,12 +200,10 @@ extends GregtechMeta_MultiBlockBase {
return ModBlocks.blockCasingsMisc;
}
-
public byte getCasingMeta() {
return 6;
}
-
public byte getCasingTextureIndex() {
return (byte) TAE.GTPP_INDEX(6);
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java
index b3e503d5a8..967c82ff74 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java
@@ -1,11 +1,18 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import org.apache.commons.lang3.ArrayUtils;
import gregtech.api.enums.TAE;
@@ -43,10 +50,9 @@ import net.minecraftforge.fluids.FluidStack;
public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase {
- protected int fuelConsumption = 0;
- protected int fuelValue = 0;
- protected int fuelRemaining = 0;
protected boolean boostEu = false;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IsaMill> STRUCTURE_DEFINITION = null;
private static ITexture frontFace;
private static ITexture frontFaceActive;
@@ -64,26 +70,106 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
super(aName);
}
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Large Grinding Machine",
- "Engine Intake Casings must not be obstructed in front (only air blocks)",
- "Supply Semifluid Fuels and 2000L of Lubricant per hour to run.",
- "Supply 80L of Oxygen per second to boost output (optional).",
- "Default: Produces 2048EU/t at 100% efficiency",
- "Boosted: Produces 6144EU/t at 150% efficiency",
- "Size(WxHxD): 3x3x4, Controller (front centered)",
- "3x3x4 of Stable Titanium Machine Casing (hollow, Min 16!)",
- "All hatches except dynamo can replace any Stable Titanium casing in middle two segments",
- "2x Steel Gear Box Machine Casing inside the Hollow Casing",
- "8x Engine Intake Machine Casing (around controller)",
- "2x Input Hatch (Fuel/Lubricant)",
- "1x Maintenance Hatch",
- "1x Muffler Hatch",
- "1x Dynamo Hatch (back centered)",
- };
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Large Grinding Machine")
+ .addInfo("Grind ores.")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 4, false)
+ .addController("Front Center")
+ .addCasingInfo("IsaMill Exterior Casing", 40)
+ .addCasingInfo("IsaMill Gearbox", 6)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IsaMill> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IsaMill>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"DDD", "CCC", "CCC", "CCC", "CCC", "CCC", "CCC"},
+ {"D~D", "CGC", "CGC", "CGC", "CGC", "CGC", "CCC"},
+ {"DDD", "CCC", "CCC", "CCC", "CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IsaMill::addIsaMillList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .addElement(
+ 'D',
+ ofBlock(
+ getIntakeBlock(), getIntakeMeta()
+ )
+ )
+ .addElement(
+ 'G',
+ ofBlock(
+ getGearboxBlock(), getGearboxMeta()
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mMillingBallBuses.clear();
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 48 - 8 && checkHatch();
+ }
+
+ public final boolean addIsaMillList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_MillingBalls){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return addToMachineListInternal(mMillingBallBuses, aMetaTileEntity, aBaseCasingIndex);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) {
return new ITexture[]{
@@ -241,96 +327,10 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(ItemStack aStack) {
return checkRecipeGeneric();
}
- @Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- byte tSide = aBaseMetaTileEntity.getBackFacing();
- int aTileX = aBaseMetaTileEntity.getXCoord();
- int aTileY = aBaseMetaTileEntity.getYCoord();
- int aTileZ = aBaseMetaTileEntity.getZCoord();
- boolean xFacing = (tSide == 4 || tSide == 5);
- boolean zFacing = (tSide == 2 || tSide == 3);
- int aCasingCount = 0;
- // Check Intake Hatches
- for (int aHorizontalOffset = -1; aHorizontalOffset < 2; aHorizontalOffset++) {
- for (int aVerticalOffset = -1; aVerticalOffset < 2; aVerticalOffset++) {
- if (aHorizontalOffset == 0 && aVerticalOffset == 0) {
- continue;
- }
- int aX = !xFacing ? (aTileX + aHorizontalOffset) : aTileX;
- int aY = aTileY + aVerticalOffset;
- int aZ = !zFacing ? (aTileZ + aHorizontalOffset) : aTileZ;
- Block aIntakeBlock = aBaseMetaTileEntity.getBlock(aX, aY, aZ);
- int aIntakeMeta = aBaseMetaTileEntity.getMetaID(aX, aY, aZ);
- if (!isValidBlockForStructure(null, 0, false, aIntakeBlock, aIntakeMeta, getIntakeBlock(), getIntakeMeta())) {
- return false; // Not intake casing surrounding controller
- }
- }
- }
- // Check Casings
- int aStartDepthOffset = (tSide == 2 || tSide == 4) ? -1 : 1;
- int aFinishDepthOffset = (tSide == 2 || tSide == 4) ? -8 : 8;
- for (int aDepthOffset = aStartDepthOffset; aDepthOffset != aFinishDepthOffset;) {
- for (int aHorizontalOffset = -1; aHorizontalOffset < 2; aHorizontalOffset++) {
- for (int aVerticalOffset = -1; aVerticalOffset < 2; aVerticalOffset++) {
- if (aHorizontalOffset == 0 && aVerticalOffset == 0) {
- continue;
- }
- int aX = !xFacing ? (aTileX + aHorizontalOffset) : (aTileX + aDepthOffset);
- int aY = aTileY + aVerticalOffset;
- int aZ = !zFacing ? (aTileZ + aHorizontalOffset) : (aTileZ + aDepthOffset);
- Block aCasingBlock = aBaseMetaTileEntity.getBlock(aX, aY, aZ);
- int aCasingMeta = aBaseMetaTileEntity.getMetaID(aX, aY, aZ);
- IGregTechTileEntity aTileEntity = aBaseMetaTileEntity.getIGregTechTileEntity(aX, aY, aZ);
- if (aTileEntity != null) {
- final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
- if (aMetaTileEntity != null) {
- if (aMetaTileEntity instanceof GregtechMetaTileEntity_IsaMill) {
- Logger.INFO("Don't be cheeky, only one controller per Mill.");
- return false;
- }
- }
- }
-
- if (!isValidBlockForStructure(aTileEntity, getCasingTextureIndex(), true, aCasingBlock, aCasingMeta, getCasingBlock(), getCasingMeta())) {
- Logger.INFO("Bad casing.");
- return false; // Not valid casing
- }
- else {
- if (aTileEntity == null) {
- aCasingCount++;
- }
- }
- }
- }
- // Count Backwards for 2 axis
- if (aStartDepthOffset == -1) {
- aDepthOffset--;
- }
- // Count Forwards for 2 axis
- else {
- aDepthOffset++;
- }
- }
-
- // Check Gear Boxes
- for (int aInternalDepthAxis = 1; aInternalDepthAxis < 7; aInternalDepthAxis++) {
- if(aBaseMetaTileEntity.getBlockAtSideAndDistance(tSide, aInternalDepthAxis) != getGearboxBlock() || aBaseMetaTileEntity.getMetaIDAtSideAndDistance(tSide, aInternalDepthAxis) != getGearboxMeta()) {
- Logger.INFO("Missing Gearbox at depth "+aInternalDepthAxis);
- return false;
- }
- }
- return aCasingCount >= 48;
- }
-
public Block getCasingBlock() {
return ModBlocks.blockCasings5Misc;
}
@@ -444,7 +444,7 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
if (isValidMetaTileEntity(tHatch)) {
tItems.addAll(tHatch.getContentUsageSlots());
}
- }
+ }
return tItems;
}
@@ -509,7 +509,7 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
public boolean checkRecipeGeneric(
ItemStack[] aItemInputs, FluidStack[] aFluidInputs,
int aMaxParallelRecipes, int aEUPercent,
- int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe) {
+ int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe, boolean isOC) {
// Based on the Processing Array. A bit overkill, but very flexible.
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_AssemblyLine.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_AssemblyLine.java
index e255ab380b..8c9e886e94 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_AssemblyLine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_AssemblyLine.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced;
import java.util.ArrayList;
@@ -539,9 +540,11 @@ public class GregtechMetaTileEntity_Adv_AssemblyLine
return aCasingCount;
}
- /**
+ */
+/**
* @param state using bitmask, 1 for IntegratedCircuit, 2 for DataStick, 4 for DataOrb
- */
+ *//*
+
private boolean isCorrectDataItem(ItemStack aStack, int state){
if ((state & 1) != 0 && ItemList.Circuit_Integrated.isStackEqual(aStack, true, true)) return true;
if ((state & 2) != 0 && ItemList.Tool_DataStick.isStackEqual(aStack, false, true)) return true;
@@ -549,9 +552,11 @@ public class GregtechMetaTileEntity_Adv_AssemblyLine
return false;
}
- /**
+ */
+/**
* @param state using bitmask, 1 for IntegratedCircuit, 2 for DataStick, 4 for DataOrb
- */
+ *//*
+
public ArrayList<ItemStack> getDataItems(int state) {
ArrayList<ItemStack> rList = new ArrayList<ItemStack>();
if (GT_Utility.isStackValid(mInventory[1]) && isCorrectDataItem(mInventory[1], state)) {
@@ -621,3 +626,4 @@ public class GregtechMetaTileEntity_Adv_AssemblyLine
return 0;
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
index ca2982e1b3..5b6c5b60fa 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
@@ -1,5 +1,8 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced;
+import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
@@ -8,11 +11,10 @@ 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_Hatch_Input;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
@@ -26,14 +28,17 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
+
public class GregtechMetaTileEntity_Adv_DistillationTower extends GregtechMeta_MultiBlockBase {
private short mControllerY = 0;
private byte mMode = 0;
private boolean mUpgraded = false;
+ private IStructureDefinition<GregtechMetaTileEntity_Adv_DistillationTower> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_Adv_DistillationTower(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -47,26 +52,145 @@ public class GregtechMetaTileEntity_Adv_DistillationTower extends GregtechMeta_M
return new GregtechMetaTileEntity_Adv_DistillationTower(this.mName);
}
- public String[] getTooltip() {
- String s = "Max parallel dictated by tower tier and mode";
- String s1 = "DTower Mode: T1=4, T2=12";
- String s2 = "Distilery Mode: Tower Tier * (4*InputTier)";
- return new String[]{
- "Controller Block for the Advanced Distillation Tower",
- "T1 constructed identical to standard DT",
- "Place Distillus Upgrade Chip into Controller GUI to upgrade to T2",
- "T2 is not variable height",
- "Size(WxHxD): 3x26x3",
- "Controller (Front bottom)",
- "1x Input Hatch (Any bottom layer casing)",
- "24x Output Hatch (One per layer except bottom/top layer)",
- "1x Output Bus (Any bottom layer casing)",
- "1x Maintenance Hatch (Any casing)",
- "1x Energy Hatch (Any casing)",
- "Integral Framework I's for the rest",
- s,
- s1,
- s2};
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_Adv_DistillationTower> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_Adv_DistillationTower>builder()
+ .addShape(mName + "bottom", transpose(new String[][]{
+ {"I~I", "III", "III"}
+ }))
+ .addShape(mName + "mid", transpose(new String[][]{
+ {"CCC", "C-C", "CCC"}
+ }))
+ .addShape(mName + "top", transpose(new String[][]{
+ {"MMM", "MMM", "MMM"}
+ }))
+ .addElement(
+ 'I',
+ ofHatchAdderOptional(
+ GregtechMetaTileEntity_Adv_DistillationTower::addAdvDistillationTowerBottomList, getCasingTextureID(),
+ 1, GregTech_API.sBlockCasings4, 1
+ )
+ )
+ .addElement(
+ 'C',
+ ofHatchAdderOptional(
+ GregtechMetaTileEntity_Adv_DistillationTower::addAdvDistillationTowerMidList, getCasingTextureID(),
+ 2, GregTech_API.sBlockCasings4, 1
+ )
+ )
+ .addElement(
+ 'M',
+ ofHatchAdderOptional(
+ GregtechMetaTileEntity_Adv_DistillationTower::addAdvDistillationTowerTopList, getCasingTextureID(),
+ 3, GregTech_API.sBlockCasings4, 1
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public final boolean addAdvDistillationTowerBottomList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ public final boolean addAdvDistillationTowerMidList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output)aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ public final boolean addAdvDistillationTowerTopList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler)aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Advanced Distillation Tower")
+ .addInfo("T1 and T2 constructed identical to standard DT")
+ .addInfo("Right click the controller with screwdriver to change mode.")
+ .addInfo("Max parallel dictated by tower tier and mode")
+ .addInfo("DTower Mode: T1=4, T2=12")
+ .addInfo("Distilery Mode: Tower Tier * (4*InputTier)")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .addCasingInfo("Clean Stainless Steel Machine Casing", 7)
+ .addInputBus("Bottom Casing", 1)
+ .addOutputBus("Bottom Casing", 1)
+ .addInputHatch("Bottom Casing", 1)
+ .addMaintenanceHatch("Bottom Casing", 1)
+ .addEnergyHatch("Bottom Casing", 1)
+ .addOutputHatch("One per layer except bottom", 2)
+ .addMufflerHatch("Top Center Casing", 3)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ int layer = Math.min(stackSize.stackSize + 2, 12);
+ buildPiece(mName + "bottom", stackSize, hintsOnly, 1, 0, 0);
+ for (int i = 1; i < layer - 1; i++) {
+ buildPiece(mName + "mid", stackSize, hintsOnly, 1, i, 0);
+ }
+ buildPiece(mName + "top", stackSize, hintsOnly, 1, layer - 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ if (!checkPiece(mName + "bottom", 1, 0, 0))
+ return false;
+ int layer = 1;
+ while (checkPiece(mName + "mid", 1, layer, 0)) {
+ if (layer != mOutputHatches.size()) return false;
+ layer ++;
+ }
+ if (layer > 12 || !checkPiece(mName + "top", 1, layer, 0))
+ return false;
+ return layer == mOutputHatches.size() && checkHatch();
}
public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
@@ -81,8 +205,10 @@ public class GregtechMetaTileEntity_Adv_DistillationTower extends GregtechMeta_M
return true;
}
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
+ @Override
+ protected IAlignmentLimits getInitialAlignmentLimits() {
+ // don't rotate a freaking tower, it won't work
+ return (d, r, f) -> d.offsetY == 0 && r.isNotRotated() && !f.isVerticallyFliped();
}
public int getMaxEfficiency(ItemStack aStack) {
@@ -226,141 +352,10 @@ public class GregtechMetaTileEntity_Adv_DistillationTower extends GregtechMeta_M
return 15;
}
- @Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- int aTier = getTierOfTower();
- if (aTier > 0) {
- if (aTier == 1) {
- return checkTierOneTower(aBaseMetaTileEntity, aStack);
- }
- else if (aTier == 2) {
- return checkTierTwoTower(aBaseMetaTileEntity, aStack);
- }
- }
- return false;
- }
-
private int getTierOfTower() {
return mUpgraded ? 2 : 1;
}
- private boolean checkTierOneTower(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- mControllerY = aBaseMetaTileEntity.getYCoord();
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- int y = 0; //height
- int casingAmount = 0;
- boolean reachedTop = false;
-
- for (int x = xDir - 1; x <= xDir + 1; x++) { //x=width
- for (int z = zDir - 1; z <= zDir + 1; z++) { //z=depth
- if (x != 0 || z != 0) {
- IGregTechTileEntity tileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(x, y, z);
- Block block = aBaseMetaTileEntity.getBlockOffset(x, y, z);
- if (!addInputToMachineList(tileEntity, getCasingTextureID())
- && !addOutputToMachineList(tileEntity, getCasingTextureID())
- && !addMaintenanceToMachineList(tileEntity, getCasingTextureID())
- && !addEnergyInputToMachineList(tileEntity, getCasingTextureID())) {
- if (block == GregTech_API.sBlockCasings4 && aBaseMetaTileEntity.getMetaIDOffset(x, y, z) == 1) {
- casingAmount++;
- } else {
- return false;
- }
- }
- }
- }
- }
- y++;
-
- while (y < 12 && !reachedTop) {
- for (int x = xDir - 1; x <= xDir + 1; x++) { //x=width
- for (int z = zDir - 1; z <= zDir + 1; z++) { //z=depth
- IGregTechTileEntity tileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(x, y, z);
- Block block = aBaseMetaTileEntity.getBlockOffset(x, y, z);
- if (aBaseMetaTileEntity.getAirOffset(x, y, z)) {
- if (x != xDir || z != zDir) {
- return false;
- }
- } else {
- if (x == xDir && z == zDir) {
- reachedTop = true;
- }
- if (!addOutputToMachineList(tileEntity, getCasingTextureID())
- && !addMaintenanceToMachineList(tileEntity, getCasingTextureID())
- && !addEnergyInputToMachineList(tileEntity, getCasingTextureID())) {
- if (block == GregTech_API.sBlockCasings4 && aBaseMetaTileEntity.getMetaIDOffset(x, y, z) == 1) {
- casingAmount++;
- } else {
- return false;
- }
- }
- }
- }
- }
- y++;
- }
- return casingAmount >= 7 * y - 5 && y >= 3 && y <= 12 && reachedTop;
- }
-
- private boolean checkTierTwoTower(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- mControllerY = aBaseMetaTileEntity.getYCoord();
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- int y = 0; //height
- int casingAmount = 0;
- boolean reachedTop = false;
-
- for (int x = xDir - 1; x <= xDir + 1; x++) { //x=width
- for (int z = zDir - 1; z <= zDir + 1; z++) { //z=depth
- if (x != 0 || z != 0) {
- IGregTechTileEntity tileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(x, y, z);
- Block block = aBaseMetaTileEntity.getBlockOffset(x, y, z);
- if (!addInputToMachineList(tileEntity, getCasingTextureID())
- && !addOutputToMachineList(tileEntity, getCasingTextureID())
- && !addMaintenanceToMachineList(tileEntity, getCasingTextureID())
- && !addEnergyInputToMachineList(tileEntity, getCasingTextureID())) {
- if (block == GregTech_API.sBlockCasings4 && aBaseMetaTileEntity.getMetaIDOffset(x, y, z) == 1) {
- casingAmount++;
- } else {
- return false;
- }
- }
- }
- }
- }
- y++;
-
- while (y < 12 && !reachedTop) {
- for (int x = xDir - 1; x <= xDir + 1; x++) { //x=width
- for (int z = zDir - 1; z <= zDir + 1; z++) { //z=depth
- IGregTechTileEntity tileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(x, y, z);
- Block block = aBaseMetaTileEntity.getBlockOffset(x, y, z);
- if (aBaseMetaTileEntity.getAirOffset(x, y, z)) {
- if (x != xDir || z != zDir) {
- return false;
- }
- } else {
- if (x == xDir && z == zDir) {
- reachedTop = true;
- }
- if (!addOutputToMachineList(tileEntity, getCasingTextureID())
- && !addMaintenanceToMachineList(tileEntity, getCasingTextureID())
- && !addEnergyInputToMachineList(tileEntity, getCasingTextureID())) {
- if (block == GregTech_API.sBlockCasings4 && aBaseMetaTileEntity.getMetaIDOffset(x, y, z) == 1) {
- casingAmount++;
- } else {
- return false;
- }
- }
- }
- }
- }
- y++;
- }
- return casingAmount >= 7 * y - 5 && y >= 3 && y <= 12 && reachedTop;
- }
-
-
private int mCasingTier = 0;
private int getMachineCasingTier() {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
index 2f43d7ef94..cb00c133fb 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
@@ -1,11 +1,20 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofCoil;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.List;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.enums.HeatingCoilLevel;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GT_MetaTileEntity_Hatch_CustomFluidBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentTranslation;
@@ -17,23 +26,16 @@ 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_Muffler;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
-import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
-import gtPlusPlus.xmod.gregtech.common.StaticFields59;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase {
@@ -42,13 +44,13 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
public static String mHotFuelName = "Blazing Pyrotheum";
public static String mCasingName = "Advanced Blast Furnace Casing";
public static String mHatchName = "Pyrotheum Hatch";
+ private IStructureDefinition<GregtechMetaTileEntity_Adv_EBF> STRUCTURE_DEFINITION = null;
+ private int mCasing;
+ private boolean mHaveHatch;
- private int mHeatingCapacity = 0;
- private int controllerY;
+ private HeatingCoilLevel mHeatingCapacity;
private boolean isBussesSeparate = false;
- private static boolean mUsingPollutionOutputs = false;
-
public GregtechMetaTileEntity_Adv_EBF(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
CASING_TEXTURE_ID = TAE.getIndexFromPage(2, 11);
@@ -74,8 +76,8 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
return new GregtechMetaTileEntity_Adv_EBF(this.mName);
}
- public String[] getTooltip() {
-
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName.toLowerCase().contains(".name")) {
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings3Misc, 11);
}
@@ -85,16 +87,110 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
if (mHatchName.toLowerCase().contains(".name")) {
mHatchName = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockMachines, 968);
}
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Factory Grade Advanced Blast Furnace")
+ .addInfo("Speed: 120% | Eu Usage: 90% | Parallel: 8")
+ .addInfo("Consumes 10L of " + mHotFuelName + " per second during operation")
+ .addInfo("Constructed exactly the same as a normal EBF")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .addController("Bottom center")
+ .addCasingInfo(mCasingName, 9)
+ .addInputHatch("Any Casing", 1)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addStructureHint(mHatchName, 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_Adv_EBF> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_Adv_EBF>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"HHH", "H-H", "HHH"},
+ {"HHH", "H-H", "HHH"},
+ {"C~C", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_Adv_EBF::addAdvEBFList, CASING_TEXTURE_ID, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 11
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofCoil(
+ GregtechMetaTileEntity_Adv_EBF::setCoilLevel, GregtechMetaTileEntity_Adv_EBF::getCoilLevel
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName, stackSize, hintsOnly, 1, 3, 0);
+ }
- return new String[] {
- "Factory Grade Advanced Blast Furnace",
- "Speed: 120% | Eu Usage: 90% | Parallel: 8",
- "Consumes 10L of " + mHotFuelName + " per second during operation",
- "Constructed exactly the same as a normal EBF",
- "Use "+mCasingName+"s (9 at least!)",
- "1x " + mHatchName + " (Required)",
- "TAG_HIDE_HATCHES"
- };
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mHaveHatch = false;
+ setCoilLevel(HeatingCoilLevel.None);
+ return checkPiece(mName, 1, 3, 0) && mCasing >= 9 && mHaveHatch && getCoilLevel() != HeatingCoilLevel.None && checkHatch();
+ }
+
+ public final boolean addAdvEBFList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_CustomFluidBase && aMetaTileEntity.getBaseMetaTileEntity().getMetaTileID() == 968) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ mHaveHatch = true;
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
}
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex,
@@ -129,10 +225,6 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
return true;
}
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
-
@Override
public boolean checkRecipe(ItemStack aStack) {
if (isBussesSeparate) {
@@ -158,84 +250,6 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
}
}
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- controllerY = aBaseMetaTileEntity.getYCoord();
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
-
- this.mHeatingCapacity = 0;
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 1, zDir)) {
- return false;
- }
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 2, zDir)) {
- return false;
- }
- /*if (!addMufflerToMachineList(aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir, 3, zDir),
- CASING_TEXTURE_ID)) {
- return false;
- }*/
- Block tUsedBlock = aBaseMetaTileEntity.getBlockOffset(xDir + 1, 2, zDir);
- byte tUsedMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + 1, 2, zDir);
- this.mHeatingCapacity = StaticFields59.getHeatingCapacityForCoil(tUsedBlock, tUsedMeta);
-
- int aCasingCount = 0;
-
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
-
-
-
- if ((i != 0) || (j != 0)) {
- //Coils 1
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 1, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 1, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
-
- //Coils 2
- if (!isValidBlockForStructure(null, CASING_TEXTURE_ID, false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 2, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 2, zDir + j), StaticFields59.getBlockCasings5(), tUsedMeta)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
- }
-
- //Top Layer
-
- Block aCurrentBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, 3, zDir + j);
- int aCurrentMeta = (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 3, zDir + j);
- if (aCurrentBlock == ModBlocks.blockCasings3Misc && aCurrentMeta == 11) {
- aCasingCount++;
- }
-
- final IGregTechTileEntity tTileEntity2 = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 3, zDir + j);
- if (!isValidBlockForStructure(tTileEntity2, CASING_TEXTURE_ID, true, aCurrentBlock, aCurrentMeta, ModBlocks.blockCasings3Misc, 11)) {
- Logger.INFO("Top Layer missing.");
- return false;
- }
- }
- }
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
-
-
- Block aCurrentBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j);
- int aCurrentMeta = (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j);
- if (aCurrentBlock == ModBlocks.blockCasings3Misc && aCurrentMeta == 11) {
- aCasingCount++;
- }
- if ((xDir + i != 0) || (zDir + j != 0)) {
- IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 0,zDir + j);
- if (!isValidBlockForStructure(tTileEntity, CASING_TEXTURE_ID, true, aCurrentBlock, aCurrentMeta, ModBlocks.blockCasings3Misc, 11)) {
- Logger.INFO("Bottom Layer missing.");
- return false;
- }
- }
- }
- }
-
- return aCasingCount >= 9;
- }
-
public int getMaxEfficiency(ItemStack aStack) {
return 10000;
}
@@ -253,51 +267,6 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
}
@Override
- public boolean addOutput(FluidStack aLiquid) {
- if (aLiquid == null)
- return false;
- int targetHeight;
- FluidStack tLiquid = aLiquid.copy();
- boolean isOutputPollution = false;
- mUsingPollutionOutputs = PollutionUtils.setPollutionFluids();
- if (mUsingPollutionOutputs) {
- for (FluidStack pollutionFluidStack : PollutionUtils.mPollutionFluidStacks) {
- if (tLiquid.isFluidEqual(pollutionFluidStack)) {
- isOutputPollution = true;
- break;
- }
- }
- }
- if (isOutputPollution) {
- targetHeight = this.controllerY + 3;
- int pollutionReduction = 0;
- for (GT_MetaTileEntity_Hatch_Muffler tHatch : mMufflerHatches) {
- if (isValidMetaTileEntity(tHatch)) {
- pollutionReduction = 100 - StaticFields59.calculatePollutionReducation(tHatch, 100);
- break;
- }
- }
- tLiquid.amount = tLiquid.amount * (pollutionReduction + 5) / 100;
- } else {
- targetHeight = this.controllerY;
- }
- for (GT_MetaTileEntity_Hatch_Output tHatch : mOutputHatches) {
- if (isValidMetaTileEntity(tHatch) && GT_ModHandler.isSteam(aLiquid) ? tHatch.outputsSteam()
- : tHatch.outputsLiquids()) {
- if (tHatch.getBaseMetaTileEntity().getYCoord() == targetHeight) {
- int tAmount = tHatch.fill(tLiquid, false);
- if (tAmount >= tLiquid.amount) {
- return tHatch.fill(tLiquid, true) >= tLiquid.amount;
- } else if (tAmount > 0) {
- tLiquid.amount = tLiquid.amount - tHatch.fill(tLiquid, true);
- }
- }
- }
- }
- return false;
- }
-
- @Override
public boolean checkRecipeGeneric(ItemStack[] aItemInputs, FluidStack[] aFluidInputs, int aMaxParallelRecipes,
int aEUPercent, int aSpeedBonusPercent, int aOutputChanceRoll) {
// Based on the Processing Array. A bit overkill, but very flexible.
@@ -320,7 +289,7 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
// Remember last recipe - an optimization for findRecipe()
this.mLastRecipe = tRecipe;
- if (tRecipe == null || this.mHeatingCapacity < tRecipe.mSpecialValue) {
+ if (tRecipe == null || this.mHeatingCapacity.getHeat() < tRecipe.mSpecialValue) {
Logger.WARNING("BAD RETURN - 1");
return false;
}
@@ -333,7 +302,7 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
// EU discount
float tRecipeEUt = (tRecipe.mEUt * aEUPercent) / 100.0f;
- int tHeatCapacityDivTiers = (mHeatingCapacity - tRecipe.mSpecialValue) / 900;
+ int tHeatCapacityDivTiers = (int) (mHeatingCapacity.getHeat() - tRecipe.mSpecialValue) / 900;
if (tHeatCapacityDivTiers > 0)
tRecipeEUt = (int) (tRecipeEUt * (Math.pow(0.95, tHeatCapacityDivTiers)));
float tTotalEUt = 0.0f;
@@ -502,4 +471,12 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
isBussesSeparate = aNBT.getBoolean("isBussesSeparate");
super.loadNBTData(aNBT);
}
+
+ public HeatingCoilLevel getCoilLevel() {
+ return mHeatingCapacity;
+ }
+
+ public void setCoilLevel(HeatingCoilLevel aCoilLevel) {
+ mHeatingCapacity = aCoilLevel;
+ }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Fusion_MK4.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Fusion_MK4.java
index e1f3767f60..385826d0df 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Fusion_MK4.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Fusion_MK4.java
@@ -1,8 +1,6 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced;
-import gregtech.GT_Mod;
import gregtech.api.enums.Dyes;
-import gregtech.api.enums.GT_Values;
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
@@ -20,9 +18,6 @@ import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.block.Block;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.FluidStack;
import java.lang.reflect.Method;
@@ -44,8 +39,22 @@ public class GregtechMetaTileEntity_Adv_Fusion_MK4 extends GT_MetaTileEntity_Fus
@Override
protected GT_Multiblock_Tooltip_Builder createTooltip() {
- return new GT_Multiblock_Tooltip_Builder().addInfo(GregtechMetaTileEntity_Adv_Fusion_MK4.class.getName() + ": I don't have any info, please fix me");
- }
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType("Fusion Reactor")
+ .addInfo("HARNESSING THE POWER OF A NEUTRON STAR")
+ .addSeparator()
+ .beginStructureBlock(15, 3, 15, false)
+ .addController("See diagram when placed")
+ .addCasingInfo("Fusion Machine Casings MK III", 79)
+ .addStructureInfo("Cover the coils with casing")
+ .addOtherStructurePart("Advanced Fusion Coils", "Center part of the ring")
+ .addEnergyHatch("1-16, Specified casings", 2)
+ .addInputHatch("2-16, Specified casings", 1)
+ .addOutputHatch("1-16, Specified casings", 3)
+ .addStructureInfo("ALL Hatches must be UHV or better")
+ .toolTipFinisher("GT++");
+ return tt;
+ }
@Override
public int tier() {
@@ -82,19 +91,6 @@ public class GregtechMetaTileEntity_Adv_Fusion_MK4 extends GT_MetaTileEntity_Fus
return 13;
}
- public String[] getDescription() {
- String aTierName = GT_Values.VN[9];
- return new String[]{
- "HARNESSING THE POWER OF A NEUTRON STAR",
- "Fusion Machine Casings MK III around Advanced Fusion Coils",
- "2-16 Input Hatches",
- "1-16 Output Hatches",
- "1-16 Energy Hatches",
- "All Hatches must be "+aTierName+" or better",
- };
- //"32768 EU/t and 80mio EU Cap per Energy Hatch"
- }
-
@Override
public int tierOverclock() {
return 8;
@@ -130,20 +126,6 @@ public class GregtechMetaTileEntity_Adv_Fusion_MK4 extends GT_MetaTileEntity_Fus
return this.mMaxProgresstime > 0 ? TexturesGtBlock.Casing_Machine_Screen_3 : TexturesGtBlock.Casing_Machine_Screen_1;
}
- @Override
- public int overclock(final int mStartEnergy) {
- if (this.tierOverclock() == 1) {
- return 1;
- }
- if (this.tierOverclock() == 2) {
- return (mStartEnergy < 160000000) ? 2 : 1;
- }
- if (this.tierOverclock() == 4) {
- return (mStartEnergy < 160000000 ? 4 : (mStartEnergy < 320000000 ? 2 : 1));
- }
- return (mStartEnergy < 160000000) ? 8 : ((mStartEnergy < 320000000) ? 4 : (mStartEnergy < 640000000) ? 2 : 1);
- }
-
public boolean turnCasingActive(final boolean status) {
try {
if (this.mEnergyHatches != null) {
@@ -167,220 +149,4 @@ public class GregtechMetaTileEntity_Adv_Fusion_MK4 extends GT_MetaTileEntity_Fus
}
return true;
}
-
- @Override
- public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- int xCenter = getBaseMetaTileEntity().getXCoord() + ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetX * 5;
- int yCenter = getBaseMetaTileEntity().getYCoord();
- int zCenter = getBaseMetaTileEntity().getZCoord() + ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetZ * 5;
- if (((isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter)) || (xCenter + 5 == getBaseMetaTileEntity().getXCoord()))
- && ((isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter)) || (xCenter - 5 == getBaseMetaTileEntity().getXCoord()))
- && ((isAdvancedMachineCasing(xCenter, yCenter, zCenter + 5)) || (zCenter + 5 == getBaseMetaTileEntity().getZCoord()))
- && ((isAdvancedMachineCasing(xCenter, yCenter, zCenter - 5)) || (zCenter - 5 == getBaseMetaTileEntity().getZCoord())) && (checkCoils(xCenter, yCenter, zCenter))
- && (checkHulls(xCenter, yCenter, zCenter)) && (checkUpperOrLowerHulls(xCenter, yCenter + 1, zCenter)) && (checkUpperOrLowerHulls(xCenter, yCenter - 1, zCenter))
- && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter + 3, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter - 3, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter + 5, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter + 4, yCenter, zCenter - 5, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter + 3, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter - 3, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter + 5, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 4, yCenter, zCenter - 5, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 3, yCenter, zCenter + 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 3, yCenter, zCenter + 4, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 5, yCenter, zCenter + 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 5, yCenter, zCenter + 4, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 3, yCenter, zCenter - 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 3, yCenter, zCenter - 4, aBaseMetaTileEntity))
- && (addIfEnergyInjector(xCenter + 5, yCenter, zCenter - 4, aBaseMetaTileEntity)) && (addIfEnergyInjector(xCenter - 5, yCenter, zCenter - 4, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 1, yCenter, zCenter - 5, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 1, yCenter, zCenter + 5, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 1, yCenter, zCenter - 5, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 1, yCenter, zCenter + 5, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 1, yCenter, zCenter - 7, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 1, yCenter, zCenter + 7, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 1, yCenter, zCenter - 7, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 1, yCenter, zCenter + 7, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 5, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 5, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 5, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 5, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter + 7, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter + 7, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfExtractor(xCenter - 7, yCenter, zCenter - 1, aBaseMetaTileEntity)) && (addIfExtractor(xCenter - 7, yCenter, zCenter + 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter + 1, yCenter + 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 1, yCenter + 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 1, yCenter + 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter - 1, yCenter + 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter + 1, zCenter + 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter + 1, zCenter + 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter + 1, zCenter - 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter + 1, zCenter - 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter + 1, yCenter - 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 1, yCenter - 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 1, yCenter - 1, zCenter - 6, aBaseMetaTileEntity)) && (addIfInjector(xCenter - 1, yCenter - 1, zCenter + 6, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter - 1, zCenter + 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter - 1, zCenter + 1, aBaseMetaTileEntity))
- && (addIfInjector(xCenter - 6, yCenter - 1, zCenter - 1, aBaseMetaTileEntity)) && (addIfInjector(xCenter + 6, yCenter - 1, zCenter - 1, aBaseMetaTileEntity))
- && (this.mEnergyHatches.size() >= 1) && (this.mOutputHatches.size() >= 1) && (this.mInputHatches.size() >= 2)) {
- int mEnergyHatches_sS = this.mEnergyHatches.size();
- for (int i = 0; i < mEnergyHatches_sS; i++) {
- if (this.mEnergyHatches.get(i).mTier < 9)
- return false;
- }
- int mOutputHatches_sS = this.mOutputHatches.size();
- for (int i = 0; i < mOutputHatches_sS; i++) {
- if (this.mOutputHatches.get(i).mTier < 9)
- return false;
- }
- int mInputHatches_sS = this.mInputHatches.size();
- for (int i = 0; i < mInputHatches_sS; i++) {
- if (this.mInputHatches.get(i).mTier < 9)
- return false;
- }
- mWrench = true;
- mScrewdriver = true;
- mSoftHammer = true;
- mHardHammer = true;
- mSolderingTool = true;
- mCrowbar = true;
- return true;
- }
- return false;
- }
-
- private boolean checkCoils(int aX, int aY, int aZ) {
- return (isFusionCoil(aX + 6, aY, aZ - 1)) && (isFusionCoil(aX + 6, aY, aZ)) && (isFusionCoil(aX + 6, aY, aZ + 1)) && (isFusionCoil(aX + 5, aY, aZ - 3)) && (isFusionCoil(aX + 5, aY, aZ - 2))
- && (isFusionCoil(aX + 5, aY, aZ + 2)) && (isFusionCoil(aX + 5, aY, aZ + 3)) && (isFusionCoil(aX + 4, aY, aZ - 4)) && (isFusionCoil(aX + 4, aY, aZ + 4))
- && (isFusionCoil(aX + 3, aY, aZ - 5)) && (isFusionCoil(aX + 3, aY, aZ + 5)) && (isFusionCoil(aX + 2, aY, aZ - 5)) && (isFusionCoil(aX + 2, aY, aZ + 5))
- && (isFusionCoil(aX + 1, aY, aZ - 6)) && (isFusionCoil(aX + 1, aY, aZ + 6)) && (isFusionCoil(aX, aY, aZ - 6)) && (isFusionCoil(aX, aY, aZ + 6)) && (isFusionCoil(aX - 1, aY, aZ - 6))
- && (isFusionCoil(aX - 1, aY, aZ + 6)) && (isFusionCoil(aX - 2, aY, aZ - 5)) && (isFusionCoil(aX - 2, aY, aZ + 5)) && (isFusionCoil(aX - 3, aY, aZ - 5))
- && (isFusionCoil(aX - 3, aY, aZ + 5)) && (isFusionCoil(aX - 4, aY, aZ - 4)) && (isFusionCoil(aX - 4, aY, aZ + 4)) && (isFusionCoil(aX - 5, aY, aZ - 3))
- && (isFusionCoil(aX - 5, aY, aZ - 2)) && (isFusionCoil(aX - 5, aY, aZ + 2)) && (isFusionCoil(aX - 5, aY, aZ + 3)) && (isFusionCoil(aX - 6, aY, aZ - 1))
- && (isFusionCoil(aX - 6, aY, aZ)) && (isFusionCoil(aX - 6, aY, aZ + 1));
- }
-
- private boolean checkUpperOrLowerHulls(int aX, int aY, int aZ) {
- return (isAdvancedMachineCasing(aX + 6, aY, aZ)) && (isAdvancedMachineCasing(aX + 5, aY, aZ - 3)) && (isAdvancedMachineCasing(aX + 5, aY, aZ - 2))
- && (isAdvancedMachineCasing(aX + 5, aY, aZ + 2)) && (isAdvancedMachineCasing(aX + 5, aY, aZ + 3)) && (isAdvancedMachineCasing(aX + 4, aY, aZ - 4))
- && (isAdvancedMachineCasing(aX + 4, aY, aZ + 4)) && (isAdvancedMachineCasing(aX + 3, aY, aZ - 5)) && (isAdvancedMachineCasing(aX + 3, aY, aZ + 5))
- && (isAdvancedMachineCasing(aX + 2, aY, aZ - 5)) && (isAdvancedMachineCasing(aX + 2, aY, aZ + 5)) && (isAdvancedMachineCasing(aX, aY, aZ - 6))
- && (isAdvancedMachineCasing(aX, aY, aZ + 6)) && (isAdvancedMachineCasing(aX - 2, aY, aZ - 5)) && (isAdvancedMachineCasing(aX - 2, aY, aZ + 5))
- && (isAdvancedMachineCasing(aX - 3, aY, aZ - 5)) && (isAdvancedMachineCasing(aX - 3, aY, aZ + 5)) && (isAdvancedMachineCasing(aX - 4, aY, aZ - 4))
- && (isAdvancedMachineCasing(aX - 4, aY, aZ + 4)) && (isAdvancedMachineCasing(aX - 5, aY, aZ - 3)) && (isAdvancedMachineCasing(aX - 5, aY, aZ - 2))
- && (isAdvancedMachineCasing(aX - 5, aY, aZ + 2)) && (isAdvancedMachineCasing(aX - 5, aY, aZ + 3)) && (isAdvancedMachineCasing(aX - 6, aY, aZ));
- }
-
- private boolean checkHulls(int aX, int aY, int aZ) {
- return (isAdvancedMachineCasing(aX + 6, aY, aZ - 3)) && (isAdvancedMachineCasing(aX + 6, aY, aZ - 2)) && (isAdvancedMachineCasing(aX + 6, aY, aZ + 2))
- && (isAdvancedMachineCasing(aX + 6, aY, aZ + 3)) && (isAdvancedMachineCasing(aX + 3, aY, aZ - 6)) && (isAdvancedMachineCasing(aX + 3, aY, aZ + 6))
- && (isAdvancedMachineCasing(aX + 2, aY, aZ - 6)) && (isAdvancedMachineCasing(aX + 2, aY, aZ + 6)) && (isAdvancedMachineCasing(aX - 2, aY, aZ - 6))
- && (isAdvancedMachineCasing(aX - 2, aY, aZ + 6)) && (isAdvancedMachineCasing(aX - 3, aY, aZ - 6)) && (isAdvancedMachineCasing(aX - 3, aY, aZ + 6))
- && (isAdvancedMachineCasing(aX - 7, aY, aZ)) && (isAdvancedMachineCasing(aX + 7, aY, aZ)) && (isAdvancedMachineCasing(aX, aY, aZ - 7)) && (isAdvancedMachineCasing(aX, aY, aZ + 7))
- && (isAdvancedMachineCasing(aX - 6, aY, aZ - 3)) && (isAdvancedMachineCasing(aX - 6, aY, aZ - 2)) && (isAdvancedMachineCasing(aX - 6, aY, aZ + 2))
- && (isAdvancedMachineCasing(aX - 6, aY, aZ + 3)) && (isAdvancedMachineCasing(aX - 4, aY, aZ - 2)) && (isAdvancedMachineCasing(aX - 4, aY, aZ + 2))
- && (isAdvancedMachineCasing(aX + 4, aY, aZ - 2)) && (isAdvancedMachineCasing(aX + 4, aY, aZ + 2)) && (isAdvancedMachineCasing(aX - 2, aY, aZ - 4))
- && (isAdvancedMachineCasing(aX - 2, aY, aZ + 4)) && (isAdvancedMachineCasing(aX + 2, aY, aZ - 4)) && (isAdvancedMachineCasing(aX + 2, aY, aZ + 4));
- }
-
- private boolean addIfEnergyInjector(int aX, int aY, int aZ, IGregTechTileEntity aBaseMetaTileEntity) {
- if (addEnergyInputToMachineList(aBaseMetaTileEntity.getIGregTechTileEntity(aX, aY, aZ), 53)) {
- return true;
- }
- return isAdvancedMachineCasing(aX, aY, aZ);
- }
-
- private boolean addIfInjector(int aX, int aY, int aZ, IGregTechTileEntity aTileEntity) {
- if (addInputToMachineList(aTileEntity.getIGregTechTileEntity(aX, aY, aZ), 53)) {
- return true;
- }
- return isAdvancedMachineCasing(aX, aY, aZ);
- }
-
- private boolean addIfExtractor(int aX, int aY, int aZ, IGregTechTileEntity aTileEntity) {
- if (addOutputToMachineList(aTileEntity.getIGregTechTileEntity(aX, aY, aZ), 53)) {
- return true;
- }
- return isAdvancedMachineCasing(aX, aY, aZ);
- }
-
- private boolean isAdvancedMachineCasing(int aX, int aY, int aZ) {
- return (getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getCasing()) && (getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getCasingMeta());
- }
-
- private boolean isFusionCoil(int aX, int aY, int aZ) {
- return (getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getFusionCoil() && (getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getFusionCoilMeta()));
- }
-
- @Override
- public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
- if (aBaseMetaTileEntity.isServerSide()) {
- if (mEfficiency < 0)
- mEfficiency = 0;
- if (mRunningOnLoad && checkMachine(aBaseMetaTileEntity, mInventory[1])) {
- this.mEUStore = (int) aBaseMetaTileEntity.getStoredEU();
- checkRecipe(mInventory[1]);
- }
- if (--mUpdate == 0 || --mStartUpCheck == 0) {
- mInputHatches.clear();
- mInputBusses.clear();
- mOutputHatches.clear();
- mOutputBusses.clear();
- mDynamoHatches.clear();
- mEnergyHatches.clear();
- mMufflerHatches.clear();
- mMaintenanceHatches.clear();
- mMachine = checkMachine(aBaseMetaTileEntity, mInventory[1]);
- }
- if (mStartUpCheck < 0) {
- if (mMachine) {
- if (this.mEnergyHatches != null) {
- for (GT_MetaTileEntity_Hatch_Energy tHatch : mEnergyHatches)
- if (isValidMetaTileEntity(tHatch)) {
- long aVoltage = GT_Values.V[tHatch.mTier];
- if (aBaseMetaTileEntity.getStoredEU() + (aVoltage) < maxEUStore()
- && tHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(aVoltage, false)) {
- aBaseMetaTileEntity.increaseStoredEnergyUnits(aVoltage, true);
- }
- }
- }
- if (this.mEUStore <= 0 && mMaxProgresstime > 0) {
- stopMachine();
- }
- if (getRepairStatus() > 0) {
- if (mMaxProgresstime > 0) {
- this.getBaseMetaTileEntity().decreaseStoredEnergyUnits(mEUt, true);
- if (mMaxProgresstime > 0 && ++mProgresstime >= mMaxProgresstime) {
- if (mOutputItems != null)
- for (ItemStack tStack : mOutputItems) if (tStack != null) addOutput(tStack);
- if (mOutputFluids != null)
- for (FluidStack tStack : mOutputFluids) if (tStack != null) addOutput(tStack);
- mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000)));
- mOutputItems = null;
- mProgresstime = 0;
- mMaxProgresstime = 0;
- mEfficiencyIncrease = 0;
- if (mOutputFluids != null && mOutputFluids.length > 0) {
- try {
- GT_Mod.achievements.issueAchivementHatchFluid(aBaseMetaTileEntity.getWorld().getPlayerEntityByName(aBaseMetaTileEntity.getOwnerName()), mOutputFluids[0]);
- } catch (Exception e) {
- }
- }
- this.mEUStore = (int) aBaseMetaTileEntity.getStoredEU();
- if (aBaseMetaTileEntity.isAllowedToWork())
- checkRecipe(mInventory[1]);
- }
- } else {
- if (aTick % 100 == 0 || aBaseMetaTileEntity.hasWorkJustBeenEnabled() || aBaseMetaTileEntity.hasInventoryBeenModified()) {
- turnCasingActive(mMaxProgresstime > 0);
- if (aBaseMetaTileEntity.isAllowedToWork()) {
- this.mEUStore = (int) aBaseMetaTileEntity.getStoredEU();
- if (checkRecipe(mInventory[1])) {
- if (this.mEUStore < this.mLastRecipe.mSpecialValue) {
- mMaxProgresstime = 0;
- turnCasingActive(false);
- }
- aBaseMetaTileEntity.decreaseStoredEnergyUnits(this.mLastRecipe.mSpecialValue, true);
- }
- }
- if (mMaxProgresstime <= 0)
- mEfficiency = Math.max(0, mEfficiency - 1000);
- }
- }
- } else {
- this.mLastRecipe = null;
- stopMachine();
- }
- } else {
- turnCasingActive(false);
- this.mLastRecipe = null;
- stopMachine();
- }
- }
- aBaseMetaTileEntity.setErrorDisplayID((aBaseMetaTileEntity.getErrorDisplayID() & ~127) | (mWrench ? 0 : 1) | (mScrewdriver ? 0 : 2) | (mSoftHammer ? 0 : 4) | (mHardHammer ? 0 : 8)
- | (mSolderingTool ? 0 : 16) | (mCrowbar ? 0 : 32) | (mMachine ? 0 : 64));
- aBaseMetaTileEntity.setActive(mMaxProgresstime > 0);
- }
- }
-
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java
index 4f1e8db883..e8d9cf2271 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java
@@ -1,29 +1,34 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.GregTech_API;
import gregtech.api.enums.ItemList;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
import static gregtech.api.GregTech_API.sBlockCasings4;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_Adv_Implosion
extends GregtechMeta_MultiBlockBase {
- private String mCasingName = "Robust Tungstensteel Machine Casing";
+ private String mCasingName;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_Adv_Implosion> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_Adv_Implosion(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
mCasingName = ItemList.Casing_RobustTungstenSteel.get(1).getDisplayName();
@@ -43,17 +48,92 @@ extends GregtechMeta_MultiBlockBase {
return "Implosion Compressor";
}
- public String[] getTooltip() {
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName.contains("gt.blockcasings")) {
mCasingName = ItemList.Casing_RobustTungstenSteel.get(1).getDisplayName();
- }
- return new String[]{
- "Factory Grade Advanced Implosion Compressor",
- "Speed: 100% | Eu Usage: 100% | Parallel: ((Tier/2)+1)",
- "Constructed exactly the same as a normal Implosion Compressor",
- "Use "+mCasingName+"s (10 at least!)",
- "TAG_HIDE_HATCHES"
- };
+ }
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Factory Grade Advanced Implosion Compressor")
+ .addInfo("Speed: 100% | Eu Usage: 100% | Parallel: ((Tier/2)+1)")
+ .addInfo("Constructed exactly the same as a normal Implosion Compressor")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front center")
+ .addCasingInfo(mCasingName, 10)
+ .addInputBus("Any casing", 1)
+ .addOutputBus("Any casing", 1)
+ .addEnergyHatch("Any casing", 1)
+ .addMaintenanceHatch("Any casing", 1)
+ .addMufflerHatch("Any casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_Adv_Implosion> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_Adv_Implosion>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_Adv_Implosion::addAdvImplosionList, 48, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ sBlockCasings4, 0
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public final boolean addAdvImplosionList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName, stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 && checkHatch();
}
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
@@ -86,10 +166,6 @@ extends GregtechMeta_MultiBlockBase {
return true;
}
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
-
public boolean checkRecipe(final ItemStack aStack) {
return checkRecipeGeneric((GT_Utility.getTier(this.getMaxInputVoltage())/2+1), 100, 100);
}
@@ -106,37 +182,6 @@ extends GregtechMeta_MultiBlockBase {
return (String) GregTech_API.sSoundList.get(Integer.valueOf(5));
}
- 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;
- }
- }
-
public int getMaxEfficiency(ItemStack aStack) {
return 10000;
}
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
index 06d63867da..6deead6c48 100644
--- 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
@@ -1,23 +1,32 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
import static gregtech.api.GregTech_API.sBlockCasings1;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
-import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusInput;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusOutput;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GT_MetaTileEntity_Hatch_CustomFluidBase;
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 = "Bronze Plated Bricks";
-
+ private IStructureDefinition<GregtechMetaTileEntity_SteamMacerator> STRUCTURE_DEFINITION = null;
+ private int mCasing;
+
public GregtechMetaTileEntity_SteamMacerator(String aName) {
super(aName);
}
@@ -30,10 +39,6 @@ public class GregtechMetaTileEntity_SteamMacerator extends GregtechMeta_SteamMul
public IMetaTileEntity newMetaEntity(IGregTechTileEntity arg0) {
return new GregtechMetaTileEntity_SteamMacerator(this.mName);
}
-
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
@Override
protected GT_RenderedTexture getFrontOverlay() {
@@ -51,20 +56,82 @@ public class GregtechMetaTileEntity_SteamMacerator extends GregtechMeta_SteamMul
}
@Override
- public String[] getTooltip() {
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName.contains("gt.blockcasings")) {
mCasingName = ItemList.Casing_BronzePlatedBricks.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 Output Bus (Any casing)",
- "1x Steam Hatch (Any casing)",
- mCasingName+" for the rest (14 at least!)",
- TAG_HIDE_MAINT
- };
+ }
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Steam Macerator")
+ .addInfo("Macerates " + getMaxParallelRecipes() + " ores at a time")
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front center")
+ .addCasingInfo(mCasingName, 14)
+ .addStructureHint("Input Bus (Steam)", 1)
+ .addStructureHint("Output Bus (Steam)", 1)
+ .addStructureHint("Steam Hatch", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_SteamMacerator> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_SteamMacerator>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_SteamMacerator::addSteamMaceratorList, 10, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ sBlockCasings1, 10
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public final boolean addSteamMaceratorList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_CustomFluidBase && aMetaTileEntity.getBaseMetaTileEntity().getMetaTileID() == 31040){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mSteamInputFluids.add((GT_MetaTileEntity_Hatch_CustomFluidBase)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusInput){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mSteamInputs.add((GT_MetaTileEntity_Hatch_Steam_BusInput)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusOutput){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mSteamOutputs.add((GT_MetaTileEntity_Hatch_Steam_BusOutput)aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName, stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ fixAllMaintenanceIssue();
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 14;
}
@Override
@@ -76,41 +143,6 @@ public class GregtechMetaTileEntity_SteamMacerator extends GregtechMeta_SteamMul
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, 10, true, aBlock, aMeta,
- sBlockCasings1, 10)) {
- Logger.INFO("Bad macerator casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
- }
- if (tAmount >= 14) {
- fixAllMaintenanceIssue();
- }
- return tAmount >= 14;
- }
- }
@Override
public ItemStack[] getOutputItems(GT_Recipe aRecipe) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
index 5f7b01e4d3..5e42f449a4 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
@@ -2,9 +2,12 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.lang.reflect.Field;
import java.util.ArrayList;
-import java.util.List;
-import net.minecraft.block.Block;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -14,8 +17,6 @@ import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
@@ -23,23 +24,25 @@ import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.util.math.MathUtils;
-import gtPlusPlus.core.util.minecraft.NBTUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.helpers.CraftingHelper;
import gtPlusPlus.xmod.gregtech.common.helpers.autocrafter.AC_Helper_Utils;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase {
private MODE mMachineMode = MODE.ASSEMBLY;
private byte mTier = 1;
protected GT_Recipe mLastRecipeToBuffer;
+ private int mCasing;
+ private IStructureDefinition<GT4Entity_AutoCrafter> STRUCTURE_DEFINITION = null;
/** The crafting matrix inventory (3x3). */
public CraftingHelper mInventoryCrafter;
@@ -65,11 +68,6 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase {
}
- @Override
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
-
public void onRightclick(EntityPlayer aPlayer) {
}
@@ -128,21 +126,26 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[] {
- "Highly Advanced Autocrafter",
- "Right Click with a Screwdriver to change mode",
- "200% faster than using single block machines of the same voltage",
- "Processes two items per voltage tier",
- "Size: 3x3x3 (Hollow)",
- "Autocrafter Frame (10 at least!)",
- "Controller (Front Center)",
- "1x Input Bus",
- "1x Input Hatch",
- "1x Output Bus",
- "1x Output Hatch",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Highly Advanced Autocrafter")
+ .addInfo("Right Click with a Screwdriver to change mode")
+ .addInfo("200% faster than using single block machines of the same voltage")
+ .addInfo("Processes two items per voltage tier")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Autocrafter Frame", 10)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
@@ -157,44 +160,73 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack p1) {
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- int tAmount = 0;
+ public IStructureDefinition<GT4Entity_AutoCrafter> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GT4Entity_AutoCrafter>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GT4Entity_AutoCrafter::addAutoCrafterList, TAE.getIndexFromPage(0, 10), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 12
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
- 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, TAE.getIndexFromPage(0, 10), true, aBlock, aMeta,
- ModBlocks.blockCasings2Misc, 12)) {
- Logger.INFO("Bad Autcrafter casing");
- return false;
- }
- ++tAmount;
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
- }
- }
- }
- }
- }
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ if (checkPiece(mName, 1, 1, 0) && mCasing >= 10 && checkHatch()) {
+ setTier();
+ return true;
+ } else return false;
+ }
- if ((this.mMaintenanceHatches.size() != 1) || (this.mEnergyHatches.size() == 0)) {
- Logger.WARNING("Wrong Hatch count.");
+ public final boolean addAutoCrafterList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
}
- // mInventoryCrafter = new CraftingHelper(this);
- setTier();
- return tAmount >= 10;
-
+ return false;
}
private static GT_Recipe_Map fCircuitMap;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_ThermalBoiler.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_ThermalBoiler.java
index e77dab895e..93df62a2be 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_ThermalBoiler.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_ThermalBoiler.java
@@ -1,42 +1,38 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
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.MetaTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
-import gregtech.api.util.GTPP_Recipe;
-import gtPlusPlus.api.objects.Logger;
+import gregtech.api.util.*;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.item.general.ItemLavaFilter;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GT4Entity_ThermalBoiler
extends GregtechMeta_MultiBlockBase
{
-
+ private int mCasing;
+ private IStructureDefinition<GT4Entity_ThermalBoiler> STRUCTURE_DEFINITION = null;
private int mSuperEfficencyIncrease = 0;
- @Override
- public boolean isFacingValid(byte aFacing)
- {
- return aFacing > 1;
- }
-
public void onRightclick(EntityPlayer aPlayer)
{
getBaseMetaTileEntity().openGUI(aPlayer, 158);
@@ -208,20 +204,25 @@ extends GregtechMeta_MultiBlockBase
}
@Override
- public String[] getTooltip()
- {
- return new String[]{
- "Thermal Boiler Controller",
- "Converts Water & Heat into Steam",
- "Consult user manual for more information",
- "Size: 3x3x3 (Hollow)",
- "Thermal Containment Casings (10 at least!)",
- "Controller (front middle)",
- "2x Input Hatch (Water/Thermal Fluid)",
- "1x Output Hatch (Steam)",
- "1x Input Bus (Supplies controller with Lava Filters, optional)",
- "1x Output Bus (Filter results, optional)",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Thermal Boiler Controller")
+ .addInfo("Converts Water & Heat into Steam")
+ .addInfo("Consult user manual for more information")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Thermal Containment Casings", 10)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
@@ -234,39 +235,73 @@ extends GregtechMeta_MultiBlockBase
}
@Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack arg1) {
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
- int tAmount = 0;
+ public IStructureDefinition<GT4Entity_ThermalBoiler> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GT4Entity_ThermalBoiler>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GT4Entity_ThermalBoiler::addThermalBoilerList, TAE.getIndexFromPage(0, 1), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 11
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir)) {
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10 && checkHatch();
+ }
+
+ public final boolean addThermalBoilerList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
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, TAE.getIndexFromPage(0, 1), true, aBlock, aMeta,
- ModBlocks.blockCasings2Misc, 11)) {
- log("Bad Thermal Boiler casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
}
- return tAmount >= 10;
}
+ return false;
}
- public boolean damageFilter(){
+ public void damageFilter(){
ItemStack filter = this.mInventory[1];
if (filter != null){
if (filter.getItem() instanceof ItemLavaFilter){
@@ -276,17 +311,14 @@ extends GregtechMeta_MultiBlockBase
//Remove broken Filter
if (currentUse >= 100-1){
this.mInventory[1] = null;
- return false;
- }
+ }
else {
//Do Damage
ItemLavaFilter.setFilterDamage(filter, currentUse+1);
- return true;
- }
+ }
}
}
- return false;
}
@Override
@@ -297,7 +329,7 @@ extends GregtechMeta_MultiBlockBase
if (this.mInputBusses.size() > 0) {
for (GT_MetaTileEntity_Hatch_InputBus aBus : this.mInputBusses) {
for (ItemStack aStack : aBus.mInventory) {
- if (aStack.getItem() instanceof ItemLavaFilter) {
+ if (aStack != null && aStack.getItem() instanceof ItemLavaFilter) {
this.setGUIItemStack(aStack);
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java
index 2f1597fb87..6f8f082065 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
@@ -960,9 +961,11 @@ public class GregtechMTE_ElementalDuplicator extends GregtechMeta_MultiBlockBase
- /*
+ */
+/*
* Catalyst Handling
- */
+ *//*
+
@@ -987,3 +990,4 @@ public class GregtechMTE_ElementalDuplicator extends GregtechMeta_MultiBlockBase
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FastNeutronReactor.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FastNeutronReactor.java
index dc990bacd7..3941d59edb 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FastNeutronReactor.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FastNeutronReactor.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import gregtech.api.enums.TAE;
@@ -227,3 +228,4 @@ extends GregtechMeta_MultiBlockBase
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FrothFlotationCell.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FrothFlotationCell.java
index 2f91a6c7d4..4d190ea884 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FrothFlotationCell.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FrothFlotationCell.java
@@ -1,10 +1,17 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import org.apache.commons.lang3.ArrayUtils;
import gregtech.api.GregTech_API;
@@ -16,29 +23,20 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gregtech.api.util.GTPP_Recipe;
-import gtPlusPlus.api.helpers.GregtechPlusPlus_API.Multiblock_API;
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.api.objects.minecraft.multi.SpecialMultiBehaviour;
+import gregtech.api.util.GTPP_Recipe;;
import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.item.chemistry.AgriculturalChem;
-import gtPlusPlus.core.util.minecraft.FluidUtils;
-import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import gtPlusPlus.xmod.gregtech.common.helpers.FlotationRecipeHandler;
-import gtPlusPlus.xmod.gregtech.loaders.recipe.RecipeLoader_AlgaeFarm;
-import ic2.core.init.BlocksItems;
-import ic2.core.init.InternalName;
-import net.minecraft.block.Block;
-import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
public class GregtechMTE_FrothFlotationCell extends GregtechMeta_MultiBlockBase {
+ private int mCasing;
+ private IStructureDefinition<GregtechMTE_FrothFlotationCell> STRUCTURE_DEFINITION = null;
+
public GregtechMTE_FrothFlotationCell(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -58,10 +56,23 @@ public class GregtechMTE_FrothFlotationCell extends GregtechMeta_MultiBlockBase
}
@Override
- public String[] getTooltip() {
- return new String[] {
- "Process that milled ore!",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Process that milled ore!")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front Center")
+ .addCasingInfo("Inconel Reinforced Casing", 68)
+ .addCasingInfo("Flotation Casings", 52)
+ .addInputBus("Bottom Casing", 1)
+ .addInputHatch("Bottom Casing", 1)
+ .addOutputHatch("Bottom Casing", 1)
+ .addEnergyHatch("Bottom Casing", 1)
+ .addMaintenanceHatch("Bottom Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
@@ -69,15 +80,6 @@ public class GregtechMTE_FrothFlotationCell extends GregtechMeta_MultiBlockBase
return GregTech_API.sSoundList.get(Integer.valueOf(207));
}
-
- @Override
- public boolean isFacingValid(final byte aFacing) {
- if (aFacing == 0 || aFacing > 1) {
- return false;
- }
- return true;
- }
-
@Override
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) {
int aID = TAE.getIndexFromPage(2, 1);
@@ -108,127 +110,85 @@ public class GregtechMTE_FrothFlotationCell extends GregtechMeta_MultiBlockBase
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- Block aCasing1 = ModBlocks.blockCasings3Misc;
- int aCasingMeta1 = 1;
- Block aCasing2 = ModBlocks.blockSpecialMultiCasings;
- int aCasingMeta2 = 9;
- int aCasingCount1 = 0;
- int aCasingCount2 = 0;
- int aControllerY = aBaseMetaTileEntity.getYCoord();
- // Check adjacent blocks
- for (byte side = 2; side < 6; side++) {
- Block aBlock = aBaseMetaTileEntity.getBlockAtSide(side);
- int aMeta = aBaseMetaTileEntity.getMetaIDAtSide(side);
- if (this.isValidBlockForStructure(null, 0, false, aBlock, aMeta, aCasing1, aCasingMeta1)) {
- aCasingCount1++;
- }
- else {
- log("Bad block at Y:"+(aControllerY));
- return false;
- }
+ public IStructureDefinition<GregtechMTE_FrothFlotationCell> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMTE_FrothFlotationCell>builder()
+ .addShape(mName, new String[][]{
+ {" ", " ", " X ", " X~X ", " X ", " ", " "},
+ {" ", " F ", " FFF ", " FF FF ", " FFF ", " F ", " "},
+ {" ", " F ", " F F ", " F F ", " F F ", " F ", " "},
+ {" ", " F ", " F F ", " F F ", " F F ", " F ", " "},
+ {" ", " F ", " F F ", " F F ", " F F ", " F ", " "},
+ {" ", " F ", " F F ", " F F ", " F F ", " F ", " "},
+ {" ", " F ", " F F ", " F F ", " F F ", " F ", " "},
+ {" CCC ", " CCCCC ", "CCCCCCC", "CCCCCCC", "CCCCCCC", " CCCCC ", " CCC "},
+ {" CCC ", " CCCCC ", "CCCCCCC", "CCCCCCC", "CCCCCCC", " CCCCC ", " CCC "},
+ })
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMTE_FrothFlotationCell::addFrothFlotationCellList, TAE.getIndexFromPage(2, 1), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 1
+ )
+ )
+ )
+ )
+ .addElement(
+ 'F',
+ ofBlock(
+ ModBlocks.blockSpecialMultiCasings, 9
+ )
+ )
+ .addElement(
+ 'X',
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 1
+ )
+ )
+ .build();
}
- // Check first layer
- aControllerY--;
- for (int x = -2; x < 3; x++) {
- for (int z = -2; z < 3; z++) {
+ return STRUCTURE_DEFINITION;
+ }
- int aWorldOffsetX = aBaseMetaTileEntity.getXCoord() + x;
- int aWorldOffsetZ = aBaseMetaTileEntity.getZCoord() + z;
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 3, 3, 0);
+ }
- // Don't check air
- if ((x == -2 && z != 0) || (x == 2 && z != 0) || (z == -2 && x != 0) || (z == 2 && x != 0) || (x == 0 && z == 0)) {
- continue;
- }
- else {
- Block aBlock = aBaseMetaTileEntity.getBlock(aWorldOffsetX, aControllerY, aWorldOffsetZ);
- int aMeta = aBaseMetaTileEntity.getMetaID(aWorldOffsetX, aControllerY, aWorldOffsetZ);
- if (this.isValidBlockForStructure(null, 0, false, aBlock, aMeta, aCasing2, aCasingMeta2)) {
- aCasingCount2++;
- }
- else {
- log("Bad block at Y:"+(aControllerY)+", X:"+aWorldOffsetX+", Z:"+aWorldOffsetZ);
- aBaseMetaTileEntity.getWorld().setBlock(aWorldOffsetX, aControllerY, aWorldOffsetZ, Blocks.bookshelf);
- return false;
- }
- }
- }
- }
- // Check circular tower
- aControllerY--;
- for (int y = aControllerY; y > (aControllerY-5); y--) {
- for (int x = -2; x < 3; x++) {
- for (int z = -2; z < 3; z++) {
-
- int aWorldOffsetX = aBaseMetaTileEntity.getXCoord() + x;
- int aWorldOffsetZ = aBaseMetaTileEntity.getZCoord() + z;
-
- // Don't check air
- if ((x == -2 && z != 0) || (x == 2 && z != 0) || (z == -2 && x != 0) || (z == 2 && x != 0) || (x == 0 && z == 0)) {
- continue;
- }
- // Don't check air
- else if ((x == -1 && z == 0) || (x == 1 && z == 0) || (z == -1 && x == 0) || (z == 1 && x == 0) || (x == 0 && z == 0)) {
- continue;
- }
- else {
- Block aBlock = aBaseMetaTileEntity.getBlock(aWorldOffsetX, y, aWorldOffsetZ);
- int aMeta = aBaseMetaTileEntity.getMetaID(aWorldOffsetX, y, aWorldOffsetZ);
- if (this.isValidBlockForStructure(null, 0, false, aBlock, aMeta, aCasing2, aCasingMeta2)) {
- aCasingCount2++;
- }
- else {
- log("Bad block at Y:"+(y)+", X:"+aWorldOffsetX+", Z:"+aWorldOffsetZ);
- return false;
- }
- }
- }
- }
- }
- // Check Base
- aControllerY -= 5;
- for (int y = aControllerY; y > (aControllerY-2); y--) {
- for (int x = -3; x < 4; x++) {
- for (int z = -3; z < 4; z++) {
- int aWorldOffsetX = aBaseMetaTileEntity.getXCoord() + x;
- int aWorldOffsetZ = aBaseMetaTileEntity.getZCoord() + z;
- if ((x == -3 && z == -3) || (x == 3 && z == 3) || (x == -3 && z == 3) || (x == 3 && z == -3)) {
- continue;
- }
- else if ((x == -3 && z == -2) || (x == -2 && z == -3) || (x == 3 && z == 2) || (x == 2 && z == 3)) {
- continue;
- }
- else if ((x == -2 && z == 3) || (x == -3 && z == 2) || (x == 3 && z == -2) || (x == 2 && z == -3)) {
- continue;
- }
- else {
- Block aBlock = aBaseMetaTileEntity.getBlock(aWorldOffsetX, y, aWorldOffsetZ);
- int aMeta = aBaseMetaTileEntity.getMetaID(aWorldOffsetX, y, aWorldOffsetZ);
- IGregTechTileEntity aTile = aBaseMetaTileEntity.getIGregTechTileEntity(aWorldOffsetX, y, aWorldOffsetZ);
- if (this.isValidBlockForStructure(aTile, TAE.getIndexFromPage(2, 1), true, aBlock, aMeta, aCasing1, aCasingMeta1)) {
- if (aTile == null) {
- aCasingCount1++;
- }
- }
- else {
- log("Bad block at Y:"+(y)+", X:"+aWorldOffsetX+", Z:"+aWorldOffsetZ);
- return false;
- }
- }
- }
- }
- }
- if (aCasingCount1 < 68) {
- log("Inconel Casings found: "+aCasingCount1);
- log("Inconel Casings required: 68");
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 3, 3, 0) && mCasing >= 68 - 4 && checkHatch();
+ }
+
+ public final boolean addFrothFlotationCellList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
}
- if (aCasingCount2 < 52) {
- log("Flotation Casings found: "+aCasingCount2);
- log("Flotation Casings required: 52");
- return false;
- }
- return true;
+ return false;
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_LargeNaqReactor.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_LargeNaqReactor.java
index 974e6b36e5..1ead7edad5 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_LargeNaqReactor.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_LargeNaqReactor.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
@@ -497,4 +498,4 @@ public class GregtechMTE_LargeNaqReactor extends GregtechMeta_MultiBlockBase {
public String getMachineType() {
return "Reactor";
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java
index 6e2140a55d..9c2e3289c3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
@@ -382,3 +383,4 @@ public class GregtechMTE_MiniFusionPlant extends GregtechMeta_MultiBlockBase {
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_NuclearReactor.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_NuclearReactor.java
index df6c045703..65e24124c6 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_NuclearReactor.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_NuclearReactor.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
@@ -143,7 +144,8 @@ public class GregtechMTE_NuclearReactor extends GregtechMeta_MultiBlockBase {
public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
// Life Lessons from Greg.
- /**
+ */
+/**
[23:41:15] <GregoriusTechneticies> xdir and zdir are x2 and not x3
[23:41:26] <GregoriusTechneticies> thats you issue
[23:44:33] <Alkalus> mmm?
@@ -158,7 +160,8 @@ public class GregtechMTE_NuclearReactor extends GregtechMeta_MultiBlockBase {
[23:45:51] <Alkalus> Ahh
[23:45:57] <GregoriusTechneticies> and not 2
[23:46:06] <Alkalus> Noted, thanks :D
- */
+ *//*
+
final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 3;
final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 3;
@@ -201,7 +204,8 @@ public class GregtechMTE_NuclearReactor extends GregtechMeta_MultiBlockBase {
}
//TODO - Add Carbon Moderation Rods
- /*
+ */
+/*
else { //carbon moderation rods are at 1,1 & -1,-1 & 1,-1 & -1,1
if (aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j) != ModBlocks.blockCasingsMisc) {
Utils.LOG_WARNING("LFTR Casing(s) Missing from one of the top layers inner 3x3.");
@@ -212,7 +216,8 @@ public class GregtechMTE_NuclearReactor extends GregtechMeta_MultiBlockBase {
Utils.LOG_WARNING("LFTR Casing(s) Missing from one of the top layers inner 3x3.");
return false;
}
- }*/
+ }*//*
+
}
@@ -678,4 +683,4 @@ public class GregtechMTE_NuclearReactor extends GregtechMeta_MultiBlockBase {
super.onPostTick(aBaseMetaTileEntity, aTick);
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java
index edf3d86100..db922e0841 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java
@@ -7,13 +7,17 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe;
@@ -21,13 +25,18 @@ import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBlockBase {
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntityGeneratorArray> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntityGeneratorArray(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
}
@@ -47,18 +56,24 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Generator Array",
- "Runs supplied generators as if placed in the world",
- "Size(WxHxD): 3x3x3 (Hollow)",
- "Robust Tungstensteel Machine Casings (10 at least!)",
- "Place up to 16 Single Block GT Generators into the Controller",
- "Controller (Front centered)",
- "1x Input Hatch/Bus",
- "1x Output Hatch/Bus",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Generator Array")
+ .addInfo("Runs supplied generators as if placed in the world")
+ .addInfo("Place up to 16 Single Block GT Generators into the Controller")
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front center")
+ .addCasingInfo("Robust Tungstensteel Machine Casings", 10)
+ .addInputBus("Any casing", 1)
+ .addOutputBus("Any casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addDynamoHatch("Any casing", 1)
+ .addMaintenanceHatch("Any casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
@@ -128,11 +143,6 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
return false;
}
- @Override
- public boolean isFacingValid(byte aFacing) {
- return aFacing > 1;
- }
-
public String mMachine = "";
protected int fuelConsumption = 0;
protected int fuelValue = 0;
@@ -270,10 +280,12 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
if (this.depleteInput(tLiquid)) {
Logger.INFO("Depleted Fuel");
this.boostEu = this.depleteInput(Materials.Oxygen.getGas(2L));
- /*if (!tFluids.contains(Materials.Lubricant.getFluid(1L))) {
+
+/*if (!tFluids.contains(Materials.Lubricant.getFluid(1L))) {
Logger.INFO("No Lube.");
return false;
}*/
+
if (this.mRuntime % 72 == 0 || this.mRuntime == 0) {
this.depleteInput(Materials.Lubricant.getFluid(this.boostEu ? 2L : 1L));
}
@@ -299,8 +311,6 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
this.mEUt = 0;
this.mEfficiency = 0;
return false;
-
-
}
public static ItemStack[] clean(final ItemStack[] v) {
@@ -310,35 +320,70 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
}
@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)) {
+ public IStructureDefinition<GregtechMetaTileEntityGeneratorArray> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntityGeneratorArray>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntityGeneratorArray::addGeneratorArrayList, 48, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ GregTech_API.sBlockCasings4, 0
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 10;
+ }
+
+ public final boolean addGeneratorArrayList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
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,
- GregTech_API.sBlockCasings4, 0)) {
- Logger.INFO("Bad centrifuge casing");
- return false;
- }
- ++tAmount;
-
- }
- }
- }
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
}
- return tAmount >= 10;
}
+ return false;
}
@Override
@@ -375,17 +420,11 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
public int getEuDiscountForParallelism() {
return 0;
}
-
-
-
-
-
-
+
/**
* Code from single blocks
*/
-
-
+
public void tryProcessFuelItems(IGregTechTileEntity aBaseMetaTileEntity, ItemStack a) {
if (a != null
&& aBaseMetaTileEntity.getUniversalEnergyStored() < this.maxEUOutput() * 20L + this.getMinimumStoredEU()
@@ -484,19 +523,4 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
return null;
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityTreeFarm.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityTreeFarm.java
index c4ca10eeb9..ed101e7ab9 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityTreeFarm.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityTreeFarm.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.concurrent.ScheduledExecutorService;
@@ -47,9 +48,11 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase
- /*
+ */
+/*
* Static thread for Fake World Handling
- */
+ *//*
+
private static ScheduledExecutorService executor;
@@ -60,7 +63,8 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase
CASING_TEXTURE_ID = TAE.getIndexFromPage(1, 15);
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings2Misc, 15);
- /*if (executor == null || mTreeData == null) {
+ */
+/*if (executor == null || mTreeData == null) {
if (executor == null) {
executor = Executors.newScheduledThreadPool(10);
}
@@ -78,7 +82,8 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase
}
}
}
- }*/
+ }*//*
+
@@ -325,4 +330,4 @@ public class GregtechMetaTileEntityTreeFarm extends GregtechMeta_MultiBlockBase
}
}
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java
index 2001f67da7..1443129a28 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_AlloyBlastSmelter.java
@@ -4,13 +4,17 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe;
@@ -22,16 +26,21 @@ import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.Gregtech
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_AlloyBlastSmelter
extends GregtechMeta_MultiBlockBase {
- private int mHeatingCapacity = 0;
private int mMode = 0;
private boolean isUsingControllerCircuit = false;
private static Item circuit;
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_AlloyBlastSmelter> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_AlloyBlastSmelter(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -52,24 +61,105 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Alloy Blast Smelter", //Outputs 144mb fluid for every inputStack.stackSize; Time to use those hot metals.
- "20% Faster than the Electric Blast Furnace",
- "Allows Complex GT++ alloys to be created",
- "Circuit for recipe goes in the Input Bus or GUI slot",
- "Size: 3x4x3 (Hollow)",
- "Blast Smelter Casings (10 at least!)",
- "Controller (front middle at bottom)",
- "16x Blast Smelter Heat Containment Coils (two middle Layers, hollow)",
- "1x Input bus",
- "1x Input Hatch (optional)",
- "1x Output Hatch",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Alloy Blast Smelter")
+ .addInfo("20% Faster than the Electric Blast Furnace")
+ .addInfo("Allows Complex GT++ alloys to be created")
+ .addInfo("Circuit for recipe goes in the Input Bus or GUI slot")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 4, 3, true)
+ .addController("Bottom Center")
+ .addCasingInfo("Blast Smelter Casings", 10)
+ .addCasingInfo("Blast Smelter Heat Containment Coils", 16)
+ .addInputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_AlloyBlastSmelter> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_AlloyBlastSmelter>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC"},
+ {"HHH", "H-H", "HHH"},
+ {"HHH", "H-H", "HHH"},
+ {"C~C", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_AlloyBlastSmelter::addAlloyBlastSmelterList, TAE.GTPP_INDEX(15), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 15
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 14
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 3, 0);
}
@Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 1, 3, 0) && mCasing >= 10 && mEnergyHatches.size() == 1 && checkHatch();
+ }
+
+ public final boolean addAlloyBlastSmelterList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+
+ @Override
public String getSound() {
return GregTech_API.sSoundList.get(Integer.valueOf(208));
}
@@ -127,11 +217,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
if (this.getBaseMetaTileEntity().isServerSide()) {
@@ -230,71 +315,6 @@ extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ;
-
- this.mHeatingCapacity = 0;
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 1, zDir)) {
- return false;
- }
- if (!aBaseMetaTileEntity.getAirOffset(xDir, 2, zDir)) {
- return false;
- }
-
- this.mHeatingCapacity = 20000;
-
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- if ((i != 0) || (j != 0)) {
-
- //Coils 1
- if (!isValidBlockForStructure(null, TAE.GTPP_INDEX(1), false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 1, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 1, zDir + j), ModBlocks.blockCasingsMisc, 14)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
-
- //Coils 2
- if (!isValidBlockForStructure(null, TAE.GTPP_INDEX(1), false, aBaseMetaTileEntity.getBlockOffset(xDir + i, 2, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 2, zDir + j), ModBlocks.blockCasingsMisc, 14)) {
- Logger.INFO("Heating Coils missing.");
- return false;
- }
- }
-
- //Top Layer
- final IGregTechTileEntity tTileEntity2 = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 3, zDir + j);
- if (!isValidBlockForStructure(tTileEntity2, TAE.GTPP_INDEX(15), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, 3, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 3, zDir + j), ModBlocks.blockCasingsMisc, 15)) {
- Logger.INFO("Top Layer missing.");
- return false;
- }
- }
- }
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- if (((xDir + i) != 0) || ((zDir + j) != 0)) {
- //Bottom Layer
- final IGregTechTileEntity tTileEntity2 = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, 0, zDir + j);
- if (!isValidBlockForStructure(tTileEntity2, TAE.GTPP_INDEX(15), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, 0, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, 0, zDir + j), ModBlocks.blockCasingsMisc, 15)) {
- Logger.INFO("Bottom Layer missing.");
- return false;
- }
- }
- }
- }
- this.mHeatingCapacity += 100 * (GT_Utility.getTier(this.getMaxInputVoltage()) - 2);
-
- if ( (this.mMaintenanceHatches.size() != 1) ||
- (this.mMufflerHatches.size() != 1) ||
- (this.mInputBusses.size() < 1) ||
- (this.mOutputHatches.size() < 1) ||
- (this.mEnergyHatches.size() != 1) ) {
- return false;
- }
-
- return true;
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
index f4ff645a6b..41bf8fc146 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
@@ -2,20 +2,18 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
-import gregtech.api.enums.Dyes;
-import gregtech.api.enums.TAE;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe;
@@ -29,11 +27,17 @@ import net.minecraft.block.Block;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBase {
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_Cyclotron> STRUCTURE_DEFINITION = null;
+
public GregtechMetaTileEntity_Cyclotron(int aID, String aName, String aNameRegional, int tier) {
super(aID, aName, aNameRegional);
}
@@ -99,140 +103,124 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
}
@Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- log("Checking form of Cyclotron.");
- int xCenter = getBaseMetaTileEntity().getXCoord() + ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetX * 5;
- int yCenter = getBaseMetaTileEntity().getYCoord();
- int zCenter = getBaseMetaTileEntity().getZCoord() + ForgeDirection.getOrientation(getBaseMetaTileEntity().getFrontFacing()).offsetZ * 5;
- if (((isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter)) || (xCenter + 5 == getBaseMetaTileEntity().getXCoord()))
- && ((isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter)) || (xCenter - 5 == getBaseMetaTileEntity().getXCoord()))
- && ((isAdvancedMachineCasing(xCenter, yCenter, zCenter + 5)) || (zCenter + 5 == getBaseMetaTileEntity().getZCoord()))
- && ((isAdvancedMachineCasing(xCenter, yCenter, zCenter - 5)) || (zCenter - 5 == getBaseMetaTileEntity().getZCoord())) && (checkCoils(xCenter, yCenter, zCenter))
- && (checkHulls(xCenter, yCenter, zCenter)) && (checkUpperOrLowerHulls(xCenter, yCenter + 1, zCenter)) && (checkUpperOrLowerHulls(xCenter, yCenter - 1, zCenter))
- && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter + 3)) && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter - 3))
- && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter + 5)) && (isAdvancedMachineCasing(xCenter + 4, yCenter, zCenter - 5))
- && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter + 3)) && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter - 3))
- && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter + 5)) && (isAdvancedMachineCasing(xCenter - 4, yCenter, zCenter - 5))
- && (isAdvancedMachineCasing(xCenter + 3, yCenter, zCenter + 4)) && (isAdvancedMachineCasing(xCenter - 3, yCenter, zCenter + 4))
- && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter + 4)) && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter + 4))
- && (isAdvancedMachineCasing(xCenter + 3, yCenter, zCenter - 4)) && (isAdvancedMachineCasing(xCenter - 3, yCenter, zCenter - 4))
- && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter - 4)) && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter - 4))
- && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter - 5)) && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter + 5))
- && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter - 5)) && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter + 5))
- && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter - 7)) && (isAdvancedMachineCasing(xCenter + 1, yCenter, zCenter + 7))
- && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter - 7)) && (isAdvancedMachineCasing(xCenter - 1, yCenter, zCenter + 7))
- && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 5, yCenter, zCenter + 1))
- && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter - 5, yCenter, zCenter + 1))
- && (isAdvancedMachineCasing(xCenter + 7, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 7, yCenter, zCenter + 1))
- && (isAdvancedMachineCasing(xCenter - 7, yCenter, zCenter - 1)) && (isAdvancedMachineCasing(xCenter - 7, yCenter, zCenter + 1))
- && (isAdvancedMachineCasing(xCenter + 1, yCenter + 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter + 1, yCenter + 1, zCenter + 6))
- && (isAdvancedMachineCasing(xCenter - 1, yCenter + 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter - 1, yCenter + 1, zCenter + 6))
- && (isAdvancedMachineCasing(xCenter - 6, yCenter + 1, zCenter + 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter + 1, zCenter + 1))
- && (isAdvancedMachineCasing(xCenter - 6, yCenter + 1, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter + 1, zCenter - 1))
- && (isAdvancedMachineCasing(xCenter + 1, yCenter - 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter + 1, yCenter - 1, zCenter + 6))
- && (isAdvancedMachineCasing(xCenter - 1, yCenter - 1, zCenter - 6)) && (isAdvancedMachineCasing(xCenter - 1, yCenter - 1, zCenter + 6))
- && (isAdvancedMachineCasing(xCenter - 6, yCenter - 1, zCenter + 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter - 1, zCenter + 1))
- && (isAdvancedMachineCasing(xCenter - 6, yCenter - 1, zCenter - 1)) && (isAdvancedMachineCasing(xCenter + 6, yCenter - 1, zCenter - 1))
- && (this.mEnergyHatches.size() >= 1) && (this.mOutputBusses.size() >= 1) && (this.mInputHatches.size() >= 1) && (this.mInputBusses.size() >= 1)) {
- int mEnergyHatches_sS = this.mEnergyHatches.size();
- for (int i = 0; i < mEnergyHatches_sS; i++) {
- if (this.mEnergyHatches.get(i).mTier < tier()){
- log("bad energy hatch");
- return false;
- }
- }
- int mOutputHatches_sS = this.mOutputBusses.size();
- for (int i = 0; i < mOutputHatches_sS; i++) {
- if (this.mOutputBusses.get(i).mTier < tier()){
- log("bad output hatch");
- return false;
- }
- }
- int mInputHatches_sS = this.mInputHatches.size();
- for (int i = 0; i < mInputHatches_sS; i++) {
- if (this.mInputHatches.get(i).mTier < tier()){
- log("bad input hatch");
- return false;
- }
- }
- int mInputBusses_sS = this.mInputBusses.size();
- for (int i = 0; i < mInputBusses_sS; i++) {
- if (this.mInputBusses.get(i).mTier < tier()){
- log("bad input hatch");
- return false;
- }
- }
- this.fixAllMaintenanceIssue();
- log("Built Cyclotron.");
- turnCasingActive(true);
- return true;
- }
- log("Failed building Cyclotron.");
- return false;
+ public IStructureDefinition<GregtechMetaTileEntity_Cyclotron> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_Cyclotron>builder()
+ .addShape(mName, transpose(new String[][]{
+ {
+ " ",
+ " hhh ",
+ " hh hh ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " hh hh ",
+ " hhh ",
+ " ",
+ },
+ {
+ " hhh ",
+ " hhccchh ",
+ " hcchhhcch ",
+ " hchh hhch ",
+ " hch hch ",
+ " hch hch ",
+ "hch hch",
+ "hch hch",
+ "hch hch",
+ " hch hch ",
+ " hch hch ",
+ " hchh hhch ",
+ " hcch~hcch ",
+ " hhccchh ",
+ " hhh ",
+ },
+ {
+ " ",
+ " hhh ",
+ " hh hh ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " h h ",
+ " hh hh ",
+ " hhh ",
+ " ",
+ }
+ }))
+ .addElement(
+ 'h',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_Cyclotron::addCyclotronList, 44, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasing(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .addElement(
+ 'c',
+ ofBlock(
+ getCyclotronCoil(), getCyclotronCoilMeta()
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
}
- private boolean checkCoils(int aX, int aY, int aZ) {
- return (isCyclotronCoil(aX + 6, aY, aZ - 1)) && (isCyclotronCoil(aX + 6, aY, aZ)) && (isCyclotronCoil(aX + 6, aY, aZ + 1)) && (isCyclotronCoil(aX + 5, aY, aZ - 3)) && (isCyclotronCoil(aX + 5, aY, aZ - 2))
- && (isCyclotronCoil(aX + 5, aY, aZ + 2)) && (isCyclotronCoil(aX + 5, aY, aZ + 3)) && (isCyclotronCoil(aX + 4, aY, aZ - 4)) && (isCyclotronCoil(aX + 4, aY, aZ + 4))
- && (isCyclotronCoil(aX + 3, aY, aZ - 5)) && (isCyclotronCoil(aX + 3, aY, aZ + 5)) && (isCyclotronCoil(aX + 2, aY, aZ - 5)) && (isCyclotronCoil(aX + 2, aY, aZ + 5))
- && (isCyclotronCoil(aX + 1, aY, aZ - 6)) && (isCyclotronCoil(aX + 1, aY, aZ + 6)) && (isCyclotronCoil(aX, aY, aZ - 6)) && (isCyclotronCoil(aX, aY, aZ + 6)) && (isCyclotronCoil(aX - 1, aY, aZ - 6))
- && (isCyclotronCoil(aX - 1, aY, aZ + 6)) && (isCyclotronCoil(aX - 2, aY, aZ - 5)) && (isCyclotronCoil(aX - 2, aY, aZ + 5)) && (isCyclotronCoil(aX - 3, aY, aZ - 5))
- && (isCyclotronCoil(aX - 3, aY, aZ + 5)) && (isCyclotronCoil(aX - 4, aY, aZ - 4)) && (isCyclotronCoil(aX - 4, aY, aZ + 4)) && (isCyclotronCoil(aX - 5, aY, aZ - 3))
- && (isCyclotronCoil(aX - 5, aY, aZ - 2)) && (isCyclotronCoil(aX - 5, aY, aZ + 2)) && (isCyclotronCoil(aX - 5, aY, aZ + 3)) && (isCyclotronCoil(aX - 6, aY, aZ - 1))
- && (isCyclotronCoil(aX - 6, aY, aZ)) && (isCyclotronCoil(aX - 6, aY, aZ + 1));
- }
-
- private boolean checkUpperOrLowerHulls(int aX, int aY, int aZ) {
- return (isAdvancedMachineCasing(aX + 6, aY, aZ)) && (isAdvancedMachineCasing(aX + 5, aY, aZ - 3)) && (isAdvancedMachineCasing(aX + 5, aY, aZ - 2))
- && (isAdvancedMachineCasing(aX + 5, aY, aZ + 2)) && (isAdvancedMachineCasing(aX + 5, aY, aZ + 3)) && (isAdvancedMachineCasing(aX + 4, aY, aZ - 4))
- && (isAdvancedMachineCasing(aX + 4, aY, aZ + 4)) && (isAdvancedMachineCasing(aX + 3, aY, aZ - 5)) && (isAdvancedMachineCasing(aX + 3, aY, aZ + 5))
- && (isAdvancedMachineCasing(aX + 2, aY, aZ - 5)) && (isAdvancedMachineCasing(aX + 2, aY, aZ + 5)) && (isAdvancedMachineCasing(aX, aY, aZ - 6))
- && (isAdvancedMachineCasing(aX, aY, aZ + 6)) && (isAdvancedMachineCasing(aX - 2, aY, aZ - 5)) && (isAdvancedMachineCasing(aX - 2, aY, aZ + 5))
- && (isAdvancedMachineCasing(aX - 3, aY, aZ - 5)) && (isAdvancedMachineCasing(aX - 3, aY, aZ + 5)) && (isAdvancedMachineCasing(aX - 4, aY, aZ - 4))
- && (isAdvancedMachineCasing(aX - 4, aY, aZ + 4)) && (isAdvancedMachineCasing(aX - 5, aY, aZ - 3)) && (isAdvancedMachineCasing(aX - 5, aY, aZ - 2))
- && (isAdvancedMachineCasing(aX - 5, aY, aZ + 2)) && (isAdvancedMachineCasing(aX - 5, aY, aZ + 3)) && (isAdvancedMachineCasing(aX - 6, aY, aZ));
- }
-
- private boolean checkHulls(int aX, int aY, int aZ) {
- return (isAdvancedMachineCasing(aX + 6, aY, aZ - 3)) && (isAdvancedMachineCasing(aX + 6, aY, aZ - 2)) && (isAdvancedMachineCasing(aX + 6, aY, aZ + 2))
- && (isAdvancedMachineCasing(aX + 6, aY, aZ + 3)) && (isAdvancedMachineCasing(aX + 3, aY, aZ - 6)) && (isAdvancedMachineCasing(aX + 3, aY, aZ + 6))
- && (isAdvancedMachineCasing(aX + 2, aY, aZ - 6)) && (isAdvancedMachineCasing(aX + 2, aY, aZ + 6)) && (isAdvancedMachineCasing(aX - 2, aY, aZ - 6))
- && (isAdvancedMachineCasing(aX - 2, aY, aZ + 6)) && (isAdvancedMachineCasing(aX - 3, aY, aZ - 6)) && (isAdvancedMachineCasing(aX - 3, aY, aZ + 6))
- && (isAdvancedMachineCasing(aX - 7, aY, aZ)) && (isAdvancedMachineCasing(aX + 7, aY, aZ)) && (isAdvancedMachineCasing(aX, aY, aZ - 7)) && (isAdvancedMachineCasing(aX, aY, aZ + 7))
- && (isAdvancedMachineCasing(aX - 6, aY, aZ - 3)) && (isAdvancedMachineCasing(aX - 6, aY, aZ - 2)) && (isAdvancedMachineCasing(aX - 6, aY, aZ + 2))
- && (isAdvancedMachineCasing(aX - 6, aY, aZ + 3)) && (isAdvancedMachineCasing(aX - 4, aY, aZ - 2)) && (isAdvancedMachineCasing(aX - 4, aY, aZ + 2))
- && (isAdvancedMachineCasing(aX + 4, aY, aZ - 2)) && (isAdvancedMachineCasing(aX + 4, aY, aZ + 2)) && (isAdvancedMachineCasing(aX - 2, aY, aZ - 4))
- && (isAdvancedMachineCasing(aX - 2, aY, aZ + 4)) && (isAdvancedMachineCasing(aX + 2, aY, aZ - 4)) && (isAdvancedMachineCasing(aX + 2, aY, aZ + 4));
- }
-
- private boolean isAdvancedMachineCasing(int aX, int aY, int aZ) {
- final Block aBlock = getBaseMetaTileEntity().getBlock(aX, aY, aZ);
- final int aMeta = getBaseMetaTileEntity().getMetaID(aX, aY, aZ);
- final IGregTechTileEntity tTileEntity2 = getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ);
-
- boolean debug = isValidBlockForStructure(tTileEntity2, 44, true, aBlock, aMeta, getCasing(), getCasingMeta());
-
- /*if (!debug) {
- this.getBaseMetaTileEntity().getWorld().setBlock(aX, aY, aZ, ModBlocks.blockCompressedObsidian);
- log(""+aX+"/"+aY+"/"+aZ);
- }*/
-
- return debug;
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 7, 1, 12);
}
- private boolean isCyclotronCoil(int aX, int aY, int aZ) {
-
- final Block aBlock = getBaseMetaTileEntity().getBlock(aX, aY, aZ);
- final int aMeta = getBaseMetaTileEntity().getMetaID(aX, aY, aZ);
-
- boolean debug = isValidBlockForStructure(null, 0, false, aBlock, aMeta, getCyclotronCoil(), getCyclotronCoilMeta());
-
- /*if (!debug) {
- this.getBaseMetaTileEntity().getWorld().setBlock(aX, aY, aZ, ModBlocks.blockCompressedObsidian);
- log(""+aX+"/"+aY+"/"+aZ);
- }*/
-
- return debug;
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 7, 1, 12) && mCasing >= 40 && checkHatch();
+ }
+
+ public final boolean addCyclotronList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus && ((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity).mTier >= 5){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy && ((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity).mTier >= 5){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus && ((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity).mTier >= 5) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler && ((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity).mTier >= 5) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input && ((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mTier >= 5) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ }
+ return false;
}
public Block getCasing() {
@@ -252,23 +240,31 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "Super Magnetic Speed Shooter",
- "------------------------------------------------------------",
- "Particles are accelerated over 186 revolutions to 80% light speed",
- "Can produce a continuous beam current of 2.2 mA at 590 MeV",
- "Which will be extracted from the Isochronous Cyclotron",
- "------------------------------------------------------------",
- "Consists of the same layout as a Fusion Reactor",
- "Any external casing can be a hatch/bus, unlike Fusion",
- "Cyclotron Machine Casings around Cyclotron Coil Blocks",
- "All Hatches must be IV or better",
- "1-16 Input Hatches",
- "1-16 Input Busses",
- "1-16 Output Busses",
- "1-16 Energy Hatches",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Super Magnetic Speed Shooter")
+ .addSeparator()
+ .addInfo("Particles are accelerated over 186 revolutions to 80% light speed")
+ .addInfo("Can produce a continuous beam current of 2.2 mA at 590 MeV")
+ .addInfo("Which will be extracted from the Isochronous Cyclotron")
+ .addSeparator()
+ .addInfo("Consists of the same layout as a Fusion Reactor")
+ .addInfo("Any external casing can be a hatch/bus, unlike Fusion")
+ .addInfo("Cyclotron Machine Casings around Cyclotron Coil Blocks")
+ .addInfo("All Hatches must be IV or better")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .addCasingInfo("Cyclotron Machine Casings", 40)
+ .addCasingInfo("Cyclotron Coil", 32)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
index a65a826819..12060c0bc3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
@@ -1,22 +1,25 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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_Energy;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.FishPondFakeRecipe;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
-import gregtech.api.util.GTPP_Recipe;
+import gregtech.api.util.*;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.lib.CORE;
@@ -40,6 +43,8 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M
private boolean isUsingControllerCircuit = false;
private static final Item circuit = CI.getNumberedCircuit(0).getItem();
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_IndustrialFishingPond> STRUCTURE_DEFINITION = null;
public GregtechMetaTileEntity_IndustrialFishingPond(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -60,25 +65,101 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M
}
@Override
- public String[] getTooltip() {
- return new String[] {
- "Controller Block for the Fishing Pond",
- "Size: 9x3x9 [WxHxL] (open)",
- "X X",
- "X X",
- "XXXXXXXXX",
- "Can process (Tier + 1) * 2 recipes",
- "Put a numbered circuit into the input bus.",
- "Circuit 14 for Fish",
- "Circuit 15 for Junk",
- "Circuit 16 for Treasure",
- "Aquatic Casings (all non-hatches)",
- "Controller (front centered)",
- "1x Output Bus",
- "1x Input Bus",
- "1x Input Hatch (fill with water)",
- "1x Energy Hatch",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Fishing Pond")
+ .addInfo("Can process (Tier + 1) * 2 recipes")
+ .addInfo("Put a numbered circuit into the input bus.")
+ .addInfo("Circuit 14 for Fish")
+ .addInfo("Circuit 15 for Junk")
+ .addInfo("Circuit 16 for Treasure")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(9, 3, 9, true)
+ .addController("Front Center")
+ .addCasingInfo("Aquatic Casings", 64)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ protected IAlignmentLimits getInitialAlignmentLimits() {
+ // fuck
+ return (d, r, f) -> d.offsetY == 0 && r.isNotRotated() && !f.isVerticallyFliped();
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_IndustrialFishingPond> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_IndustrialFishingPond>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"XXXXXXXXX", "X X", "X X", "X X", "X X", "X X", "X X", "X X", "XXXXXXXXX"},
+ {"XXXX~XXXX", "X X", "X X", "X X", "X X", "X X", "X X", "X X", "XXXXXXXXX"},
+ {"XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX"},
+ }))
+ .addElement(
+ 'X',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_IndustrialFishingPond::addIndustrialFishingPondList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public final boolean addIndustrialFishingPondList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 4, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 4, 1, 0) && mCasing >= 64 && checkHatch();
}
@Override
@@ -108,11 +189,6 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public boolean checkRecipe(final ItemStack aStack) {
if (aStack != null) {
log("Found " + aStack.getDisplayName());
@@ -161,101 +237,6 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M
}
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- // Get Facing direction
- int mDirectionX = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX;
- int mCurrentDirectionX;
- int mCurrentDirectionZ;
- int mOffsetX_Lower = 0;
- int mOffsetX_Upper = 0;
- int mOffsetZ_Lower = 0;
- int mOffsetZ_Upper = 0;
-
- mCurrentDirectionX = 4;
- mCurrentDirectionZ = 4;
-
- mOffsetX_Lower = -4;
- mOffsetX_Upper = 4;
- mOffsetZ_Lower = -4;
- mOffsetZ_Upper = 4;
-
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX
- * mCurrentDirectionX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ
- * mCurrentDirectionZ;
-
- log("xDir" + (xDir));
- log("zDir" + (zDir));
- /*
- * if (!(aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir))) { return false; }
- */
- int tAmount = 0;
- check : for (int i = mOffsetX_Lower; i <= mOffsetX_Upper; ++i) {
- for (int j = mOffsetZ_Lower; j <= mOffsetZ_Upper; ++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);
- if (!addToMachineList(tTileEntity)) {
- log("X: " + i + " | Z: " + j);
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
- byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
-
- if ((tBlock == getCasingBlock()) && (tMeta == getCasingMeta())) {
- ++tAmount;
- } else {
- if ((i != mOffsetX_Lower && j != mOffsetZ_Lower && i != mOffsetX_Upper
- && j != mOffsetZ_Upper) && (h == 0 || h == 1)) {
-
- continue;
-
- /*if (tBlock instanceof BlockAir || tBlock.getUnlocalizedName().equalsIgnoreCase("tile.air") || tBlock.getUnlocalizedName().equalsIgnoreCase("tile.railcraft.residual.heat")) {
- log("Found Air");
- continue;
- } else if (tBlock instanceof BlockWater || tBlock == Blocks.water || tBlock == Blocks.flowing_water) {
- log("Found Water");
- continue;
- }
- else {
- break check;
- }*/
- } else {
- if (tBlock.getLocalizedName().contains("gt.blockmachines") || tBlock == Blocks.water
- || tBlock == Blocks.flowing_water
- || tBlock == BlocksItems.getFluidBlock(InternalName.fluidDistilledWater)) {
- continue;
-
- } else {
- log("[x] Did not form - Found: " + tBlock.getLocalizedName() + " | "
- + tBlock.getDamageValue(aBaseMetaTileEntity.getWorld(),
- aBaseMetaTileEntity.getXCoord() + i,
- aBaseMetaTileEntity.getYCoord(),
- aBaseMetaTileEntity.getZCoord() + j)
- + " | Special Meta: "
- + (tTileEntity == null ? "0" : tTileEntity.getMetaTileID()));
- log("[x] Did not form - Found: "
- + (aBaseMetaTileEntity.getXCoord() + xDir + i) + " | "
- + aBaseMetaTileEntity.getYCoord() + " | "
- + (aBaseMetaTileEntity.getZCoord() + zDir + j));
- break check;
- }
- }
-
- }
- }
- }
- }
- }
- }
- if ((tAmount >= 64)) {
- log("Made structure.");
- } else {
- log("Did not make structure.");
- }
- return (tAmount >= 64);
- }
-
- @Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
}
@@ -287,15 +268,6 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M
return TAE.GTPP_INDEX(32);
}
- private boolean addToMachineList(final IGregTechTileEntity tTileEntity) {
- /*return ((this.addMaintenanceToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addInputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addOutputToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addMufflerToMachineList(tTileEntity, this.getCasingTextureIndex()))
- || (this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex())));*/
- return super.addToMachineList(tTileEntity, this.getCasingTextureIndex());
- }
-
public boolean checkForWater() {
// Get Facing direction
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeRocketEngine.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeRocketEngine.java
index e7277644ae..c26633805e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeRocketEngine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeRocketEngine.java
@@ -3,24 +3,19 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
import java.util.Collection;
-import gregtech.api.GregTech_API;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.enums.GT_Values;
-import gregtech.api.enums.Materials;
import gregtech.api.enums.TAE;
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_Hatch;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.item.chemistry.RocketFuels;
import gtPlusPlus.core.lib.LoadedMods;
@@ -37,6 +32,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_MultiBlockBase
{
protected int fuelConsumption;
@@ -53,6 +52,8 @@ public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_Multi
public static String mIntakeHatchName = "Tungstensteel Turbine Casing";
public static String mGearboxName = "Inconel Reinforced Casing";
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_LargeRocketEngine> STRUCTURE_DEFINITION = null;
private final static int CASING_ID = TAE.getIndexFromPage(3, 11);
@@ -75,7 +76,7 @@ public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_Multi
}
@Override
- public String[] getTooltip() {
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName.toLowerCase().contains(".name")) {
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings4Misc, 11);
}
@@ -91,26 +92,162 @@ public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_Multi
if (mCoolantName.toLowerCase().contains(".")) {
mCoolantName = FluidUtils.getFluidStack("liquidhydrogen", 1).getLocalizedName();
}
- return new String[] {
- "Controller Block for the Large Rocket Engine",
- "Supply Rocket Fuels and 1000L(3000L boosted) of "+mLubricantName+" per hour to run",
- "Supply 4L of "+mCoolantName+" per second per 2100 eu/t to boost output (optional)",
- "Consumes 2000L/s of air per 16384 eu/t produced",
- "Produces as much energy as you put fuel in",
- "Produces 1500 pollution/S per 16384 eu/t produced",
- "When producing more then 32K eu/t fuel wil be consume less efficiently (3x - 1.5x eff@57Keu/t input energy)",
- "formula: x = input of energy (10K^(1/3)/ x^(1/3)) * (40K^(1/3)/ x^(1/3))",
- "Boosting will produce 3x the amount of power but will consume 3x fuel",
- "Size(WxHxD): 3x3x10, Controller (front centered)",
- "3x3x10 of "+mCasingName+" (hollow, Min 64!)",
- "8x "+mGearboxName+" inside the Hollow Casing",
- "1x Dynamo Hatch (Top Middle, Max 8) suports tectech dynamos",
- "8x Air Intake Hatch (one of the Casings next to a "+mGearboxName+", top row allowed)",
- "3x Input Hatch (Rocket Fuel/Booster/co2) (one of the Casings next to a "+mGearboxName+", top row not allowed)",
- "1x Input Bus to supply filters for advanced muffler (one of the Casings next to a \"+mGearboxName+\", top row not allowed)",
- "1x Maintenance Hatch (one of the Casings next to a "+mGearboxName+")",
- "1x Muffler Hatch (Back Centre)",
- };
+
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Large Rocket Engine")
+ .addInfo("Supply Rocket Fuels and 1000L(3000L boosted) of " + mLubricantName + " per hour to run")
+ .addInfo("Supply 4L of " + mCoolantName + " per second per 2100 eu/t to boost output (optional)")
+ .addInfo("Consumes 2000L/s of air per 16384 eu/t produced")
+ .addInfo("Produces as much energy as you put fuel in")
+ .addInfo("Produces 1500 pollution/S per 16384 eu/t produced")
+ .addInfo("When producing more then 32K eu/t fuel wil be consume less efficiently (3x - 1.5x eff@57Keu/t input energy)")
+ .addInfo("formula: x = input of energy (10K^(1/3)/ x^(1/3)) * (40K^(1/3)/ x^(1/3))")
+ .addInfo("Boosting will produce 3x the amount of power but will consume 3x fuel")
+ .addSeparator()
+ .beginStructureBlock(3, 3, 10, false)
+ .addController("Front Center")
+ .addCasingInfo(mCasingName, 64)
+ .addCasingInfo(mGearboxName, 8)
+ .addStructureHint("Air Intake Hatch", 1)
+ .addInputBus("Side center line", 1)
+ .addInputHatch("Side center line", 1)
+ .addOutputHatch("Side center line", 1)
+ .addMaintenanceHatch("Side center line", 1)
+ .addDynamoHatch("Top center line", 2)
+ .addMufflerHatch("Back Center", 3)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_LargeRocketEngine> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_LargeRocketEngine>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CTC", "CTC", "CTC", "CTC", "CTC", "CTC", "CTC", "CTC", "CCC"},
+ {"C~C", "SIS", "SIS", "SIS", "SIS", "SIS", "SIS", "SIS", "SIS", "CMC"},
+ {"CCC", "CSC", "CSC", "CSC", "CSC", "CSC", "CSC", "CSC", "CSC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ .addElement(
+ 'I',
+ ofBlock(
+ getGearboxBlock(), getGearboxMeta()
+ )
+ )
+ .addElement(
+ 'T',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_LargeRocketEngine::addLargeRocketEngineTopList, getCasingTextureIndex(), 2
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .addElement(
+ 'S',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_LargeRocketEngine::addLargeRocketEngineSideList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .addElement(
+ 'M',
+ ofHatchAdder(
+ GregtechMetaTileEntity_LargeRocketEngine::addLargeRocketEngineBackList, getCasingTextureIndex(), 3
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ this.mTecTechDynamoHatches.clear();
+ this.mAllDynamoHatches.clear();
+ this.mAirIntakes.clear();
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 64 - 48 && mAirIntakes.size() >= 8 && checkHatch();
+ }
+
+ public final boolean addLargeRocketEngineTopList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAllDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) aMetaTileEntity);
+ } if (LoadedMods.TecTech) {
+ if (isThisHatchMultiDynamo(aMetaTileEntity)) {
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAllDynamoHatches.add((GT_MetaTileEntity_Hatch) aMetaTileEntity);
+ }
+ }
+ }
+ return false;
+ }
+
+ public final boolean addLargeRocketEngineSideList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_AirIntake) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAirIntakes.add(aMetaTileEntity) && this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ public final boolean addLargeRocketEngineBackList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler)aMetaTileEntity);
+ }
+ }
+ return false;
}
@Override
@@ -138,7 +275,8 @@ public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_Multi
else {
int totalAir = 0;
FluidStack airstack = FluidUtils.getFluidStack("air", 1);
- for (GT_MetaTileEntity_Hatch_AirIntake u : this.mAirIntakes) {
+ for (Object U : this.mAirIntakes) {
+ GT_MetaTileEntity_Hatch_AirIntake u = (GT_MetaTileEntity_Hatch_AirIntake) U;
if (u != null && u.mFluid != null) {
// had this trow errors cousing the machine to stop probebly fixed
FluidStack f = u.mFluid;
@@ -295,159 +433,6 @@ public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_Multi
int LOHamount = (3 * euProduction)/1000;
return this.depleteInput(FluidUtils.getFluidStack(RocketFuels.Liquid_Hydrogen, LOHamount)); //(40 * ((long) euProduction / 10000))
}
-
- @Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- byte tSide = getBaseMetaTileEntity().getBackFacing();
- int tX = getBaseMetaTileEntity().getXCoord();
- int tY = getBaseMetaTileEntity().getYCoord();
- int tZ = getBaseMetaTileEntity().getZCoord();
-
- this.mTecTechDynamoHatches.clear();
- this.mAllDynamoHatches.clear();
-
- final int MAX_LENGTH = 8;
- for (int length=0;length<MAX_LENGTH;length++) {
- if(getBaseMetaTileEntity().getBlockAtSideAndDistance(tSide, length+1) != getGearboxBlock()) {
- log("Bad Gearbox Block");
- return false;
- }
- if(getBaseMetaTileEntity().getMetaIDAtSideAndDistance(tSide, length+1) != getGearboxMeta()) {
- log("Bad Gearbox Meta");
- return false;
- }
- }
- log("Found "+MAX_LENGTH+" "+mGearboxName+"s.");
- for (byte i = -1; i < 2; i = (byte) (i + 1)) {
- for (byte j = -1; j < 2; j = (byte) (j + 1)) {
- if ((i != 0) || (j != 0)) {
- for (byte aLength = 0; aLength < (MAX_LENGTH+2); aLength = (byte) (aLength + 1)) { // Length
-
-
- final int fX = tX - (tSide == 5 ? 1 : tSide == 4 ? -1 : i),
- fZ = tZ - (tSide == 2 ? -1 : tSide == 3 ? 1 : i),
- aY = tY + j,
- aX = tX + (tSide == 5 ? aLength : tSide == 4 ? -aLength : i),
- aZ = tZ + (tSide == 2 ? -aLength : tSide == 3 ? aLength : i);
-
-
- //Why check for air in world when each intake requires 1 air block?
- //final Block frontAir = getBaseMetaTileEntity().getBlock(fX, aY, fZ);
- //final String frontAirName = frontAir.getUnlocalizedName();
- //if(!(getBaseMetaTileEntity().getAir(fX, aY, fZ) || frontAirName.equalsIgnoreCase("tile.air") || frontAirName.equalsIgnoreCase("tile.railcraft.residual.heat"))) {
- //log("Bad Air Check");
- //return false; //Fail if vent blocks are obstructed
- //}
-
- if (((i == 0) || (j == 0)) && ((aLength > 0) && (aLength <= MAX_LENGTH))) {
- log("Checking for Hatches. "+aLength);
- //Top Row
- if (j == 1) {
- if (addDynamoToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ), getCasingTextureIndex())) {
- // Do Nothing
- }
- else if (addAirIntakeToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ), getCasingTextureIndex())) {
- // Do Nothing
- }
- else if (getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getCasingBlock() && getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getCasingMeta()) {
- // Do nothing
- }
- else {
- log("Top Row - "+aLength+" | Did not find casing or Dynamo");
- return false;
- }
- }
- else {
- IGregTechTileEntity aCheck = getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ);
- if (aCheck != null) {
- final IMetaTileEntity bCheck = aCheck.getMetaTileEntity();
- // Only allow Dynamos on Top
- if (bCheck instanceof GT_MetaTileEntity_Hatch_Dynamo) {
- log("Found dynamo in disallowed location | "+aX+", "+aY+", "+aZ+" | "+i+", "+j+", "+aLength);
- return false;
- }
- }
- if (addAirIntakeToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ), getCasingTextureIndex())) {
- // Do Nothing
- }
- else if (addInputToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ), getCasingTextureIndex())) {
- // Do Nothing
- }
- else if (addOutputToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ), getCasingTextureIndex())) {
- // Do Nothing
- }
- else if (getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getCasingBlock() && getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getCasingMeta()) {
- // Do nothing
- }
- else {log("Bad block.");
- return false;
- }
-
- }
- log("Passed check. "+aLength);
-
- } else if (aLength == 0) {
- log("Searching for Gearbox");
- if (addMaintenanceToMachineList(getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ), getCasingTextureIndex())) {
- // Do Nothing
- }
- else if(!(getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getCasingBlock() && getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getCasingMeta())) {
- log("Bad Missing Casing || Bad Meta");
- return false;
- }
- else {
- log("Found "+mCasingName+".");
- }
- } else if (getBaseMetaTileEntity().getBlock(aX, aY, aZ) == getCasingBlock() && getBaseMetaTileEntity().getMetaID(aX, aY, aZ) == getCasingMeta()) {
- log("Found Casing.");
- // Do nothing
- } else {
- log("Bad XXX");
- return false;
- }
- }
- }
- }
- }
-
- this.mMufflerHatches.clear();
- IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), MAX_LENGTH+1);
- if ((tTileEntity != null) && (tTileEntity.getMetaTileEntity() != null)) {
- if ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Muffler)) {
- this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) tTileEntity.getMetaTileEntity());
- this.updateTexture(tTileEntity, getCasingTextureIndex());
- }
- }
-
- mAllDynamoHatches.addAll(this.mDynamoHatches);
-
- if (LoadedMods.TecTech) {
- mAllDynamoHatches.addAll(this.mTecTechDynamoHatches);
- }
-
- if (this.mAllDynamoHatches.size() <= 0 || this.mAllDynamoHatches.isEmpty()) {
- log("Wrong count for Dynamos");
- return false;
- }
-
- if (this.mMufflerHatches.size() != 1 || this.mMufflerHatches.isEmpty()) {
- log("Wrong count for Mufflers");
- return false;
- }
-
- if (this.mAirIntakes.size() < 8 || this.mAirIntakes.isEmpty()) {
- log("Wrong count for Air Intakes | "+this.mAirIntakes.size());
- return false;
- }
- if (this.mMaintenanceHatches.size() < 1 || this.mMaintenanceHatches.isEmpty()) {
- log("Wrong count for Maint. Hatches");
- return false;
- }
-
-
- log("Formed Rocket Engine.");
- return true;
- }
@Override
public boolean addEnergyOutput(long aEU) {
@@ -557,14 +542,6 @@ public class GregtechMetaTileEntity_LargeRocketEngine extends GregtechMeta_Multi
return 11;
}
- public Block getIntakeBlock() {
- return GregTech_API.sBlockCasings4;
- }
-
- public byte getIntakeMeta() {
- return 12;
- }
-
public Block getGearboxBlock() {
return ModBlocks.blockCasings3Misc;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeSemifluidGenerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeSemifluidGenerator.java
index 2f67f8e713..20fd55ef53 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeSemifluidGenerator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_LargeSemifluidGenerator.java
@@ -3,6 +3,8 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
import java.util.Collection;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.Textures;
@@ -10,8 +12,9 @@ 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_Hatch_Dynamo;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.GTPP_Recipe.GTPP_Recipe_Map;
@@ -22,8 +25,15 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_LargeSemifluidGenerator extends GregtechMeta_MultiBlockBase {
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_LargeSemifluidGenerator> STRUCTURE_DEFINITION = null;
+
protected int fuelConsumption = 0;
protected int fuelValue = 0;
protected int fuelRemaining = 0;
@@ -37,24 +47,29 @@ public class GregtechMetaTileEntity_LargeSemifluidGenerator extends GregtechMeta
super(aName);
}
- public String[] getTooltip() {
- return new String[]{
- "Controller Block for the Large Semifluid Generator",
- "Engine Intake Casings must not be obstructed in front (only air blocks)",
- "Supply Semifluid Fuels and 2000L of Lubricant per hour to run.",
- "Supply 80L of Oxygen per second to boost output (optional).",
- "Default: Produces 2048EU/t at 100% efficiency",
- "Boosted: Produces 6144EU/t at 150% efficiency",
- "Size(WxHxD): 3x3x4, Controller (front centered)",
- "3x3x4 of Stable Titanium Machine Casing (hollow, Min 16!)",
- "All hatches except dynamo can replace any Stable Titanium casing in middle two segments",
- "2x Steel Gear Box Machine Casing inside the Hollow Casing",
- "8x Engine Intake Machine Casing (around controller)",
- "2x Input Hatch (Fuel/Lubricant)",
- "1x Maintenance Hatch",
- "1x Muffler Hatch",
- "1x Dynamo Hatch (back centered)",
- };
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Large Semifluid Generator")
+ .addInfo("Engine Intake Casings must not be obstructed in front (only air blocks)")
+ .addInfo("Supply Semifluid Fuels and 2000L of Lubricant per hour to run.")
+ .addInfo("Supply 80L of Oxygen per second to boost output (optional).")
+ .addInfo("Default: Produces 2048EU/t at 100% efficiency")
+ .addInfo("Boosted: Produces 6144EU/t at 150% efficiency")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 4, false)
+ .addController("Front Center")
+ .addCasingInfo("Stable Titanium Machine Casing", 16)
+ .addCasingInfo("Steel Gear Box Machine Casing", 2)
+ .addCasingInfo("Engine Intake Machine Casing", 8)
+ .addInputHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .addDynamoHatch("Back Center", 2)
+ .toolTipFinisher("GT++");
+ return tt;
}
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
@@ -116,95 +131,93 @@ public class GregtechMetaTileEntity_LargeSemifluidGenerator extends GregtechMeta
}
@Override
- public boolean checkMultiblock(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
- byte tSide = aBaseMetaTileEntity.getBackFacing();
- int aTileX = aBaseMetaTileEntity.getXCoord();
- int aTileY = aBaseMetaTileEntity.getYCoord();
- int aTileZ = aBaseMetaTileEntity.getZCoord();
- boolean xFacing = (tSide == 4 || tSide == 5);
- boolean zFacing = (tSide == 2 || tSide == 3);
- int aCasingCount = 0;
- // Check Intake Hatches
- for (int aHorizontalOffset = -1; aHorizontalOffset < 2; aHorizontalOffset++) {
- for (int aVerticalOffset = -1; aVerticalOffset < 2; aVerticalOffset++) {
- if (aHorizontalOffset == 0 && aVerticalOffset == 0) {
- continue;
- }
- int aX = !xFacing ? (aTileX + aHorizontalOffset) : aTileX;
- int aY = aTileY + aVerticalOffset;
- int aZ = !zFacing ? (aTileZ + aHorizontalOffset) : aTileZ;
- Block aIntakeBlock = aBaseMetaTileEntity.getBlock(aX, aY, aZ);
- int aIntakeMeta = aBaseMetaTileEntity.getMetaID(aX, aY, aZ);
- if (!isValidBlockForStructure(null, 0, false, aIntakeBlock, aIntakeMeta, getIntakeBlock(), getIntakeMeta())) {
- return false; // Not intake casing surrounding controller
- }
- }
- }
- // Check Casings
- int aStartDepthOffset = (tSide == 2 || tSide == 4) ? -1 : 1;
- int aFinishDepthOffset = (tSide == 2 || tSide == 4) ? -4 : 4;
- for (int aDepthOffset = aStartDepthOffset; aDepthOffset != aFinishDepthOffset;) {
- for (int aHorizontalOffset = -1; aHorizontalOffset < 2; aHorizontalOffset++) {
- for (int aVerticalOffset = -1; aVerticalOffset < 2; aVerticalOffset++) {
- if (aHorizontalOffset == 0 && aVerticalOffset == 0) {
- continue;
- }
- int aX = !xFacing ? (aTileX + aHorizontalOffset) : (aTileX + aDepthOffset);
- int aY = aTileY + aVerticalOffset;
- int aZ = !zFacing ? (aTileZ + aHorizontalOffset) : (aTileZ + aDepthOffset);
- Block aCasingBlock = aBaseMetaTileEntity.getBlock(aX, aY, aZ);
- int aCasingMeta = aBaseMetaTileEntity.getMetaID(aX, aY, aZ);
- IGregTechTileEntity aTileEntity = getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ);
- // Side areas
- if (aDepthOffset < 3) {
- if (!isValidBlockForStructure(aTileEntity, getCasingTextureIndex(), true, aCasingBlock, aCasingMeta, getCasingBlock(), getCasingMeta())) {
- return false; // Not valid casing
- }
- else {
- if (aTileEntity == null) {
- aCasingCount++;
- }
- }
- }
- else {
- if (!isValidBlockForStructure(null, 0, false, aCasingBlock, aCasingMeta, getCasingBlock(), getCasingMeta())) {
- return false; // Not valid casing
- }
- else {
- aCasingCount++;
- }
- }
- }
- }
- // Count Backwards for 2 axis
- if (aStartDepthOffset == -1) {
- aDepthOffset--;
- }
- // Count Forwards for 2 axis
- else {
- aDepthOffset++;
- }
+ public IStructureDefinition<GregtechMetaTileEntity_LargeSemifluidGenerator> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_LargeSemifluidGenerator>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"III", "CCC", "CCC", "CCC"},
+ {"I~I", "CGC", "CGC", "CMC"},
+ {"III", "CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_LargeSemifluidGenerator::addLargeSemifluidGeneratorList, getCasingTextureIndex(), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ getCasingBlock(), getCasingMeta()
+ )
+ )
+ )
+ )
+ .addElement(
+ 'G',
+ ofBlock(
+ getGearboxBlock(), getGearboxMeta()
+ )
+ )
+ .addElement(
+ 'I',
+ ofBlock(
+ getIntakeBlock(), getIntakeMeta()
+ )
+ )
+ .addElement(
+ 'M',
+ ofHatchAdder(
+ GregtechMetaTileEntity_LargeSemifluidGenerator::addLargeSemifluidGeneratorBackList, getCasingTextureIndex(), 2
+ )
+ )
+ .build();
}
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mDynamoHatches.clear();
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 16 && checkHatch();
+ }
- // Check Gear Boxes
- if(aBaseMetaTileEntity.getBlockAtSideAndDistance(tSide, 1) != getGearboxBlock() && aBaseMetaTileEntity.getBlockAtSideAndDistance(tSide, 2) != getGearboxBlock()) {
+ public final boolean addLargeSemifluidGeneratorList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
}
- if(aBaseMetaTileEntity.getMetaIDAtSideAndDistance(tSide, 1) != getGearboxMeta() && aBaseMetaTileEntity.getMetaIDAtSideAndDistance(tSide, 2) != getGearboxMeta()) {
+ return false;
+ }
+
+ public final boolean addLargeSemifluidGeneratorBackList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
return false;
- }
-
- // Check Dynamo
- this.mDynamoHatches.clear();
- IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 3);
- if ((tTileEntity != null) && (tTileEntity.getMetaTileEntity() != null)) {
- if ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Dynamo)) {
- this.addDynamoToMachineList(tTileEntity, getCasingTextureIndex());
- } else {
- return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)aMetaTileEntity);
}
}
- return aCasingCount >= 16;
+ return false;
}
public Block getCasingBlock() {
@@ -235,10 +248,6 @@ public class GregtechMetaTileEntity_LargeSemifluidGenerator extends GregtechMeta
return 50;
}
- private boolean addToMachineList(IGregTechTileEntity tTileEntity) {
- return ((addMaintenanceToMachineList(tTileEntity, getCasingTextureIndex())) || (addInputToMachineList(tTileEntity, getCasingTextureIndex())) || (addOutputToMachineList(tTileEntity, getCasingTextureIndex())) || (addMufflerToMachineList(tTileEntity, getCasingTextureIndex())));
- }
-
@Override
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GregtechMetaTileEntity_LargeSemifluidGenerator(this.mName);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
index 1c327c9715..43c5a37399 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
@@ -3,6 +3,8 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.ArrayList;
import java.util.Collection;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.enums.ConfigCategories;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
@@ -11,14 +13,10 @@ 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_Input;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.GT_Config;
-import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.*;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
-import gregtech.api.util.GT_Utility;
-import gregtech.api.util.GTPP_Recipe;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.util.minecraft.ItemUtils;
@@ -26,14 +24,16 @@ import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MatterFab;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
-import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlockBase {
public static int sUUAperUUM = 1;
@@ -59,6 +59,9 @@ public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlo
private static FluidStack[] mUU = new FluidStack[2];
private static ItemStack mScrap[] = new ItemStack[2];
+ private int mCasing;
+ private IStructureDefinition<GregtechMetaTileEntity_MassFabricator> STRUCTURE_DEFINITION = null;
+
public int getAmplifierUsed(){
return this.mAmplifierUsed;
}
@@ -87,7 +90,7 @@ public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlo
}
@Override
- public String[] getTooltip() {
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
if (mCasingName1.toLowerCase().contains(".name")) {
mCasingName1 = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasingsMisc, 9);
@@ -98,19 +101,27 @@ public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlo
if (mCasingName3.toLowerCase().contains(".name")) {
mCasingName3 = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasingsMisc, 8);
}
-
- return new String[]{
- "Controller Block for the Matter Fabricator",
- "Produces UU-A, UU-M & Scrap",
- "Size(WxHxD): 5x4x5, Controller (Bottom center)",
- "3x1x3 "+mCasingName3+"s (Inside bottom 5x1x5 layer)",
- "9x "+mCasingName3+" (Centered 3x1x3 area in Bottom layer)",
- "24x "+mCasingName2+" for the walls",
- mCasingName1+"s for the edges & top (40 at least!)",
- "1x Input Hatch/Bus",
- "1x Output Hatch/Bus",
- "1x Energy Hatch",
- };
+
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Matter Fabricator")
+ .addInfo("Produces UU-A, UU-M & Scrap")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(5, 4, 5, true)
+ .addController("Front Center")
+ .addCasingInfo(mCasingName3, 9)
+ .addCasingInfo(mCasingName2, 24)
+ .addCasingInfo(mCasingName1, 40)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .addOutputHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .addMaintenanceHatch("Any Casing", 1)
+ .addMufflerHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
@@ -167,92 +178,89 @@ public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlo
ItemStack[] tItemInputs = tItems.toArray(new ItemStack[tItems.size()]);
FluidStack[] tFluidInputs = tFluids.toArray(new FluidStack[tFluids.size()]);
return checkRecipeGeneric(tItemInputs, tFluidInputs, 4, 80, 00, 100);
- }
+ }
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_MassFabricator> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_MassFabricator>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"},
+ {"CGGGC", "G---G", "G---G", "G---G", "CGGGC"},
+ {"CGGGC", "G---G", "G---G", "G---G", "CGGGC"},
+ {"CC~CC", "CHHHC", "CHHHC", "CHHHC", "CCCCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_MassFabricator::addMassFabricatorList, TAE.GTPP_INDEX(9), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 9
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofBlock(
+ ModBlocks.blockCasingsMisc, 8
+ )
+ )
+ .addElement(
+ 'G',
+ ofBlock(
+ ModBlocks.blockCasings3Misc, 15
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 2;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 2;
-
- Block aContainmentGlass = ModBlocks.blockCasings3Misc;
- int aContainmentMeta = 15;
-
- for (int i = -2; i < 3; i++) {
- for (int j = -2; j < 3; j++) {
- for (int h = 0; h < 4; h++) {
-
- //Utils.LOG_INFO("Logging Variables - xDir:"+xDir+" zDir:"+zDir+" h:"+h+" i:"+i+" j:"+j);
-
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, h, zDir + j);
-
- if (((i != -2) && (i != 2)) && ((j != -2) && (j != 2))) {
- if (h == 0) {
- if (!isValidBlockForStructure(null, TAE.GTPP_INDEX(9), false, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasingsMisc, 8)) {
- Logger.INFO("Matter Generation Coils missings from the bottom layer, inner 3x3.");
- return false;
- }
- } else if (h == 3) {
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(9), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasingsMisc, 9)) {
- Logger.INFO("Matter Fabricator Casings Missing from one of the top layers inner 3x3.");
- return false;
- }
- } else {
- if (!aBaseMetaTileEntity.getAirOffset(xDir + i, h, zDir + j)) {
- Logger.INFO("Make sure the inner 3x3 of the Multiblock is Air.");
- return false;
- }
- }
- } else {
- if (h == 0) {
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(9), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasingsMisc, 9)) {
- Logger.INFO("Matter Fabricator Casings Missing from one of the edges of the bottom layer.");
- return false;
- }
- } else {
- if (h == 1) {
- if (((i == -2) || (i == 2)) && ((j == -2) || (j == 2))){
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(9), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasingsMisc, 9)) {
- Logger.INFO("Matter Fabricator Casings Missing from one of the corners in the second layer.");
- return false;
- }
- }
-
- else if (((i != -2) || (i != 2)) && ((j != -2) || (j != 2))){
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(9), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), aContainmentGlass, aContainmentMeta)) {
- Logger.INFO("Glass Casings Missing from somewhere in the second layer.");
- return false;
- }
- }
- }
- if (h == 2) {
- if (((i == -2) || (i == 2)) && ((j == -2) || (j == 2))){
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(9), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasingsMisc, 9)) {
- Logger.INFO("Matter Fabricator Casings Missing from one of the corners in the third layer.");
- return false;
- }
- }
-
- else if (((i != -2) || (i != 2)) && ((j != -2) || (j != 2))){
- if (!isValidBlockForStructure(null, TAE.GTPP_INDEX(9), false, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), aContainmentGlass, aContainmentMeta)) {
- Logger.INFO("Glass Casings Missing from somewhere in the third layer.");
- return false;
- }
- }
- }
- if (h == 3) {
- if (!isValidBlockForStructure(tTileEntity, TAE.GTPP_INDEX(9), true, aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j), (int) aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j), ModBlocks.blockCasingsMisc, 9)) {
- Logger.INFO("Matter Fabricator Casings Missing from one of the edges on the top layer.");
- return false;
- }
- }
- }
- }
- }
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 2, 3, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ return checkPiece(mName, 2, 3, 0) && mCasing >= 40 && checkHatch();
+ }
+
+ public final boolean addMassFabricatorList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
}
}
- Logger.INFO("Multiblock Formed.");
- return true;
+ return false;
}
@Override
@@ -351,11 +359,11 @@ public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlo
return true;
}
- return super.checkRecipeGeneric(c, getMaxParallelRecipes(), getEuDiscountForParallelism(), aSpeedBonusPercent, aOutputChanceRoll);
+ return super.checkRecipeGeneric(c, getMaxParallelRecipes(), getEuDiscountForParallelism(), aSpeedBonusPercent, aOutputChanceRoll, true);
}
//Return normal Recipe handling
- return super.checkRecipeGeneric(aItemInputs, aFluidInputs, getMaxParallelRecipes(), getEuDiscountForParallelism(), aSpeedBonusPercent, aOutputChanceRoll);
+ return super.checkRecipeGeneric(aItemInputs, aFluidInputs, getMaxParallelRecipes(), getEuDiscountForParallelism(), aSpeedBonusPercent, aOutputChanceRoll, true);
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
index a61e7de9b4..b732d6df7e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import gregtech.api.enums.TAE;
@@ -281,4 +282,4 @@ public class GregtechMetaTileEntity_Refinery extends GregtechMeta_MultiBlockBase
return new GregtechMetaTileEntity_Refinery(this.mName);
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_SolarTower.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_SolarTower.java
index c0dedcd988..d42b33a403 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_SolarTower.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_SolarTower.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
import java.util.HashMap;
@@ -698,3 +699,4 @@ extends GregtechMeta_MultiBlockBase {
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/GregtechMTE_AlgaePondBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/GregtechMTE_AlgaePondBase.java
index c48e6dc0bd..31d9bd2312 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/GregtechMTE_AlgaePondBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/GregtechMTE_AlgaePondBase.java
@@ -1,14 +1,20 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.algae;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.List;
+import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import org.apache.commons.lang3.ArrayUtils;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
@@ -37,6 +43,9 @@ import net.minecraftforge.fluids.FluidStack;
public class GregtechMTE_AlgaePondBase extends GregtechMeta_MultiBlockBase {
private int mLevel = -1;
+ private int mCasing;
+ private IStructureDefinition<GregtechMTE_AlgaePondBase> STRUCTURE_DEFINITION = null;
+ private int checkMeta;
public GregtechMTE_AlgaePondBase(final int aID, final String aName, final String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -57,25 +66,110 @@ public class GregtechMTE_AlgaePondBase extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[] {
- "Grows Algae!",
- "Controller Block for the Algae Farm",
- "Provide compost to boost production by one tier",
- "Size: 9x3x9 [WxHxL] (open)",
- "X X",
- "X X",
- "XXXXXXXXX",
- "Machine Casings (all bottom layer)",
- "Sterile Farm Casings (rest)",
- "Controller (front centered)",
- "All hatches must be on the bottom layer",
- "All hulls must be the same tier, this dictates machine speed",
- "Does not require power or maintenance",
- "1x Output Bus",
- "1x Input Bus (optional)",
- "1x Input Hatch (fill with water)",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Grows Algae!")
+ .addInfo("Controller Block for the Algae Farm")
+ .addInfo("Provide compost to boost production by one tier")
+ .addInfo("Does not require power or maintenance")
+ .addInfo("All Machine Casings must be the same tier, this dictates machine speed.")
+ .addInfo("Fill Input Hatch with water.")
+ .addPollutionAmount(getPollutionPerTick(null) * 20)
+ .addSeparator()
+ .beginStructureBlock(9, 3, 9, true)
+ .addController("Front Center")
+ .addCasingInfo("Machine Casings", 64)
+ .addCasingInfo("Sterile Farm Casings", 34)
+ .addInputBus("Any Casing", 1)
+ .addOutputBus("Any Casing", 1)
+ .addInputHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ public void setMeta(int meta) {
+ checkMeta = meta;
+ }
+
+ public int getMeta() {
+ return checkMeta;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMTE_AlgaePondBase> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMTE_AlgaePondBase>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"XXXXXXXXX", "X X", "X X", "X X", "X X", "X X", "X X", "X X", "XXXXXXXXX"},
+ {"XXXXXXXXX", "X X", "X X", "X X", "X X", "X X", "X X", "X X", "XXXXXXXXX"},
+ {"CCCC~CCCC", "CCCCCCCCC", "CCCCCCCCC", "CCCCCCCCC", "CCCCCCCCC", "CCCCCCCCC", "CCCCCCCCC", "CCCCCCCCC", "CCCCCCCCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMTE_AlgaePondBase::addAlgaePondBaseList, TAE.getIndexFromPage(1, 15), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ addTieredBlock(
+ GregTech_API.sBlockCasings1, GregtechMTE_AlgaePondBase::setMeta, GregtechMTE_AlgaePondBase::getMeta, 10
+ )
+ )
+ )
+ )
+ .addElement(
+ 'X',
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 15
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 4, 2, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mLevel = 0;
+ checkMeta = 0;
+ if (checkPiece(mName, 4, 2, 0) && mCasing >= 64 && checkMeta > 0) {
+ mLevel = checkMeta - 1;
+ return true;
+ }
+ return false;
+ }
+
+ public final boolean addAlgaePondBaseList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ }else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected IAlignmentLimits getInitialAlignmentLimits() {
+ // fuck
+ return (d, r, f) -> d.offsetY == 0 && r.isNotRotated() && !f.isVerticallyFliped();
}
@Override
@@ -107,11 +201,6 @@ public class GregtechMTE_AlgaePondBase extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public int getMaxParallelRecipes() {
return 2;
}
@@ -121,117 +210,6 @@ public class GregtechMTE_AlgaePondBase extends GregtechMeta_MultiBlockBase {
return 0;
}
- @Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
-
- this.mLevel = 0;
-
-
- // Get Facing direction
- int mCurrentDirectionX;
- int mCurrentDirectionZ;
-
- int mOffsetX_Lower = 0;
- int mOffsetX_Upper = 0;
- int mOffsetZ_Lower = 0;
- int mOffsetZ_Upper = 0;
-
- mCurrentDirectionX = 4;
- mCurrentDirectionZ = 4;
-
- mOffsetX_Lower = -4;
- mOffsetX_Upper = 4;
- mOffsetZ_Lower = -4;
- mOffsetZ_Upper = 4;
-
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX
- * mCurrentDirectionX;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ
- * mCurrentDirectionZ;
-
- // Get Expected Tier
-// Block aCasingBlock = aBaseMetaTileEntity.getBlockAtSide((byte) 3);
-// int aCasingMeta = aBaseMetaTileEntity.getMetaIDAtSide((byte) 3);
-//
-// // Bad Casings
-// if ((aCasingBlock != GregTech_API.sBlockCasings1) || aCasingMeta > 9) {
-// Logger.INFO("is false");
-// return false;
-// }
-// else {
- mLevel = this.getCasingTier();
- //}
- int aID = TAE.getIndexFromPage(1, 15);
- int tAmount = 0;
- check : for (int i = mOffsetX_Lower; i <= mOffsetX_Upper; ++i) {
- for (int j = mOffsetZ_Lower; j <= mOffsetZ_Upper; ++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);
-
- Logger.INFO("X: " + i + " | Z: " + j+" | Tier: "+aID);
- if (h == -1 && tTileEntity != null && addToMachineList(tTileEntity, aID)) {
- continue;
- }
- else if (h != -1 && tTileEntity != null) {
- Logger.INFO("Found hatch in wrong place, expected casing.");
- return false;
- }
-
- Block tBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j);
- byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j);
-
- if ((h >= 0) && (tBlock == ModBlocks.blockCasings2Misc) && (tMeta == 15) ) {
- ++tAmount;
- }
- else if ((h == -1) && (tBlock == GregTech_API.sBlockCasings1) && (tMeta == mLevel) ) {
- ++tAmount;
- }
- else if ((h == -1) && (tBlock == GregTech_API.sBlockCasings1) && (tMeta != mLevel) ) {
- Logger.INFO("Found wrong tiered casing.");
- return false;
- }
- else {
- if ((i != mOffsetX_Lower && j != mOffsetZ_Lower && i != mOffsetX_Upper
- && j != mOffsetZ_Upper) && (h == 0 || h == 1)) {
- continue;
- } else {
- if (tBlock.getLocalizedName().contains("gt.blockmachines") || tBlock == Blocks.water
- || tBlock == Blocks.flowing_water
- || tBlock == BlocksItems.getFluidBlock(InternalName.fluidDistilledWater)) {
- continue;
-
- } else {
- Logger.INFO("[x] Did not form - Found: " + tBlock.getLocalizedName() + " | "
- + tBlock.getDamageValue(aBaseMetaTileEntity.getWorld(),
- aBaseMetaTileEntity.getXCoord() + i,
- aBaseMetaTileEntity.getYCoord(),
- aBaseMetaTileEntity.getZCoord() + j)
- + " | Special Meta: "
- + (tTileEntity == null ? "0" : tTileEntity.getMetaTileID()));
- Logger.INFO("[x] Did not form - Found: "
- + (aBaseMetaTileEntity.getXCoord() + xDir + i) + " | "
- + aBaseMetaTileEntity.getYCoord() + " | "
- + (aBaseMetaTileEntity.getZCoord() + zDir + j));
- break check;
- }
- }
-
- }
-
- }
- }
- }
- }
- if ((tAmount >= 64)) {
- Logger.INFO("Made structure.");
- this.getBaseMetaTileEntity().getWorld().markBlockForUpdate(this.getBaseMetaTileEntity().getXCoord(), this.getBaseMetaTileEntity().getYCoord(), this.getBaseMetaTileEntity().getZCoord());
- } else {
- Logger.INFO("Did not make structure.");
- }
- return (tAmount >= 64);
- }
-
public boolean checkForWater() {
// Get Facing direction
@@ -475,17 +453,14 @@ public class GregtechMTE_AlgaePondBase extends GregtechMeta_MultiBlockBase {
if (i.stackSize >= 8) {
return true;
}
- else {
- continue;
- }
}
}
return false;
}
- private final int getCasingTier() {
- if (this == null || this.getBaseMetaTileEntity().getWorld() == null) {
+ private int getCasingTier() {
+ if (this.getBaseMetaTileEntity().getWorld() == null) {
return 0;
}
try {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform1.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform1.java
index a3e288c33c..018120d614 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform1.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform1.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.bedrock;
import gregtech.api.enums.TAE;
@@ -42,4 +43,4 @@ public class GregtechMetaTileEntity_BedrockMiningPlatform1 extends GregtechMetaT
protected int getBaseProgressTime() {
return (int) (420*(this.mProductionModifier/100));
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform2.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform2.java
index 6910f4e97c..6b97cb7ee2 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform2.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatform2.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.bedrock;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -42,4 +43,4 @@ public class GregtechMetaTileEntity_BedrockMiningPlatform2 extends GregtechMetaT
protected int getBaseProgressTime() {
return 480;
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java
index 19e6627154..4a2747a3db 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java
@@ -1,11 +1,20 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.chemplant;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gtPlusPlus.core.util.data.ArrayUtils.removeNulls;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import com.gtnewhorizon.structurelib.StructureLibAPI;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.IStructureElement;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.util.*;
+import net.minecraft.world.World;
import org.apache.commons.lang3.ArrayUtils;
import cpw.mods.fml.relauncher.Side;
@@ -15,11 +24,7 @@ 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_TieredMachineBlock;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.GTPP_Recipe;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Triplet;
@@ -30,11 +35,8 @@ import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.nbthandlers.GT_MetaTileEntity_Hatch_Catalysts;
-import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
-import gtPlusPlus.xmod.gregtech.common.StaticFields59;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.block.Block;
-import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
@@ -45,7 +47,14 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
private int mSolidCasingTier = 0;
private int mMachineCasingTier = 0;
private int mPipeCasingTier = 0;
- private int mCoilTier = 0;
+ private int mCoilTier = 0;
+ private int checkCoil;
+ private int[] checkCasing = new int[8];
+ private int checkMachine;
+ private int checkPipe;
+ private int maxTierOfHatch;
+ private int mCasing;
+ private IStructureDefinition<GregtechMTE_ChemicalPlant> STRUCTURE_DEFINITION = null;
private ArrayList<GT_MetaTileEntity_Hatch_Catalysts> mCatalystBuses = new ArrayList<GT_MetaTileEntity_Hatch_Catalysts>();
@@ -71,18 +80,6 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
return aSize > aSize2;
}
- private static Block getBlockForTier(int aTier) {
- if (!mTieredBlockRegistry.containsKey(aTier)) {
- return Blocks.bedrock;
- }
- return mTieredBlockRegistry.get(aTier).getValue_1();
- }
- private static int getMetaForTier(int aTier) {
- if (!mTieredBlockRegistry.containsKey(aTier)) {
- return 32;
- }
- return mTieredBlockRegistry.get(aTier).getValue_2();
- }
private static int getCasingTextureIdForTier(int aTier) {
if (!mTieredBlockRegistry.containsKey(aTier)) {
return 10;
@@ -103,16 +100,284 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
}
@Override
- public String[] getTooltip() {
- return new String[] {
- "Controller Block for the Chemical Plant",
- "Heavy Industry, now right at your doorstep!",
- "Please read to user manual for more information on construction & usage",
- TAG_HIDE_MAINT
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Chemical Plant")
+ .addInfo("Heavy Industry, now right at your doorstep!")
+ .addInfo("Please read to user manual for more information on construction & usage")
+ .addSeparator()
+ .addController("Bottom Center")
+ .addStructureHint("Catalyst Housing", 1)
+ .addInputBus("Bottom Casing", 1)
+ .addOutputBus("Bottom Casing", 1)
+ .addInputHatch("Bottom Casing", 1)
+ .addOutputHatch("Bottom Casing", 1)
+ .addEnergyHatch("Bottom Casing", 1)
+ .addMaintenanceHatch("Bottom Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
+ }
+
+ public void setMachineMeta(int meta) {
+ checkMachine = meta;
+ }
+
+ public int getMachineMeta() {
+ return checkMachine;
+ }
+
+ public void setPipeMeta(int meta) {
+ checkPipe = meta;
+ }
+
+ public int getPipeMeta() {
+ return checkPipe;
+ }
+
+ public void setCoilMeta(int meta) {
+ checkCoil = meta;
+ }
+
+ public int getCoilMeta() {
+ return checkCoil;
+ }
+
+ public int coilTier(int meta) {
+ switch (meta) {
+ case 0: return 1;
+ case 1: return 2;
+ case 2: return 3;
+ case 3: return 4;
+ case 4: return 5;
+ case 5: return 7;
+ case 6: return 8;
+ case 7: return 10;
+ case 8: return 11;
+ case 9: return 6;
+ case 10: return 9;
+ }
+ return 0;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMTE_ChemicalPlant> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMTE_ChemicalPlant>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX"},
+ {"X X", " MMMMM ", " MHHHM ", " MHHHM ", " MHHHM ", " MMMMM ", "X X"},
+ {"X X", " ", " PPP ", " PPP ", " PPP ", " ", "X X"},
+ {"X X", " ", " HHH ", " HHH ", " HHH ", " ", "X X"},
+ {"X X", " ", " PPP ", " PPP ", " PPP ", " ", "X X"},
+ {"X X", " MMMMM ", " MHHHM ", " MHHHM ", " MHHHM ", " MMMMM ", "X X"},
+ {"CCC~CCC", "CMMMMMC", "CMMMMMC", "CMMMMMC", "CMMMMMC", "CMMMMMC", "CCCCCCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMTE_ChemicalPlant::addChemicalPlantList, getCasingTextureID(), 1
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[0]; ++x.mCasing;},
+ ofSolidCasing(0)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[1]; ++x.mCasing;},
+ ofSolidCasing(1)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[2]; ++x.mCasing;},
+ ofSolidCasing(2)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[3]; ++x.mCasing;},
+ ofSolidCasing(3)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[4]; ++x.mCasing;},
+ ofSolidCasing(4)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[5]; ++x.mCasing;},
+ ofSolidCasing(5)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[6]; ++x.mCasing;},
+ ofSolidCasing(6)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[7]; ++x.mCasing;},
+ ofSolidCasing(7)
+ )
+ )
+ )
+ .addElement(
+ 'X',
+ ofChain(
+ onElementPass(
+ x -> {++x.checkCasing[0]; ++x.mCasing;},
+ ofSolidCasing(0)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[1]; ++x.mCasing;},
+ ofSolidCasing(1)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[2]; ++x.mCasing;},
+ ofSolidCasing(2)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[3]; ++x.mCasing;},
+ ofSolidCasing(3)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[4]; ++x.mCasing;},
+ ofSolidCasing(4)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[5]; ++x.mCasing;},
+ ofSolidCasing(5)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[6]; ++x.mCasing;},
+ ofSolidCasing(6)
+ ),
+ onElementPass(
+ x -> {++x.checkCasing[7]; ++x.mCasing;},
+ ofSolidCasing(7)
+ )
+ )
+ )
+ .addElement(
+ 'M',
+ addTieredBlock(
+ GregTech_API.sBlockCasings1, GregtechMTE_ChemicalPlant::setMachineMeta, GregtechMTE_ChemicalPlant::getMachineMeta, 10
+ )
+ )
+ .addElement(
+ 'H',
+ addTieredBlock(
+ GregTech_API.sBlockCasings5, GregtechMTE_ChemicalPlant::setCoilMeta, GregtechMTE_ChemicalPlant::getCoilMeta, 11
+ )
+ )
+ .addElement(
+ 'P',
+ addTieredBlock(
+ GregTech_API.sBlockCasings2, GregtechMTE_ChemicalPlant::setPipeMeta, GregtechMTE_ChemicalPlant::getPipeMeta, 12, 16
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public static <T> IStructureElement<T> ofSolidCasing(int aIndex) {
+ return new IStructureElement<T>() {
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ Block block = world.getBlock(x, y, z);
+ int meta = world.getBlockMetadata(x, y, z);
+ Block target = mTieredBlockRegistry.get(aIndex).getValue_1();
+ int targetMeta = mTieredBlockRegistry.get(aIndex).getValue_2();
+ return target.equals(block) && meta == targetMeta;
+ }
+
+ int getIndex(int size) {
+ if (size > 8) size = 8;
+ return size - 1;
+ }
+
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ StructureLibAPI.hintParticle(world, x, y, z, mTieredBlockRegistry.get(getIndex(trigger.stackSize)).getValue_1(), mTieredBlockRegistry.get(getIndex(trigger.stackSize)).getValue_2());
+ return true;
+ }
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ return world.setBlock(x, y, z, mTieredBlockRegistry.get(getIndex(trigger.stackSize)).getValue_1(), mTieredBlockRegistry.get(getIndex(trigger.stackSize)).getValue_2(), 3);
+ }
};
}
@Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName , stackSize, hintsOnly, 3, 6, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ for (int i = 0; i < 8; i++) {
+ checkCasing[i] = 0;
+ }
+ checkCoil = 0;
+ checkPipe = 0;
+ checkMachine = 0;
+ mSolidCasingTier = 0;
+ mMachineCasingTier = 0;
+ mPipeCasingTier = 0;
+ mCoilTier = 0;
+ mCatalystBuses.clear();
+ if (checkPiece(mName, 3, 6, 0) && mCasing >= 80) {
+ for (int i = 0; i < 8; i++) {
+ if (checkCasing[i] == mCasing) {
+ mSolidCasingTier = i;
+ }
+ else if (checkCasing[i] > 0)
+ return false;
+ }
+ mMachineCasingTier = checkMachine - 1;
+ mPipeCasingTier = checkPipe - 12;
+ mCoilTier = coilTier(checkCoil - 1);
+ updateHatchTexture();
+ return mMachineCasingTier >= maxTierOfHatch;
+ }
+ return false;
+ }
+
+ public void updateHatchTexture() {
+ for (GT_MetaTileEntity_Hatch h : mCatalystBuses) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mInputBusses) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mMaintenanceHatches) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mEnergyHatches) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mOutputBusses) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mInputHatches) h.updateTexture(getCasingTextureID());
+ for (GT_MetaTileEntity_Hatch h : mOutputHatches) h.updateTexture(getCasingTextureID());
+ }
+
+ public final boolean addChemicalPlantList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Catalysts){
+ return addToMachineListInternal(mCatalystBuses, aMetaTileEntity, aBaseCasingIndex);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus){
+ maxTierOfHatch = Math.max(maxTierOfHatch, ((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity).mTier);
+ return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance){
+ return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy){
+ maxTierOfHatch = Math.max(maxTierOfHatch, ((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity).mTier);
+ return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
+ maxTierOfHatch = Math.max(maxTierOfHatch, ((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity).mTier);
+ return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
+ maxTierOfHatch = Math.max(maxTierOfHatch, ((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mTier);
+ return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
+ maxTierOfHatch = Math.max(maxTierOfHatch, ((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity).mTier);
+ return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
+ }
+ }
+ return false;
+ }
+
+ @Override
public String getSound() {
return GregTech_API.sSoundList.get(Integer.valueOf(207));
}
@@ -155,11 +420,6 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
}
@Override
- public boolean isFacingValid(final byte aFacing) {
- return aFacing > 1;
- }
-
- @Override
public int getMaxParallelRecipes() {
return 2 * getPipeCasingTier();
}
@@ -176,12 +436,10 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
private int getMachineCasingTier() {
return mMachineCasingTier;
}
+
private int getPipeCasingTier() {
return mPipeCasingTier;
}
- private int getCoilTier() {
- return mCoilTier;
- }
private int getCasingTextureID() {
// Check the Tier Client Side
@@ -228,420 +486,6 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
mCoilTier = aNBT.getInteger("mCoilTier");
}
- private static boolean isBlockSolidCasing(int aCurrentTier, Block aBlock, int aMeta) {
- if (aBlock == null || (aMeta < 0 || aMeta > 16)) {
- return false;
- }
- Block aTieredCasing = getBlockForTier(aCurrentTier);
- int aTieredMeta = getMetaForTier(aCurrentTier);
- if (aBlock == aTieredCasing && aMeta == aTieredMeta) {
- return true;
- }
- return false;
- }
- private static boolean isBlockMachineCasing(Block aBlock, int aMeta) {
- Block aCasingBlock1 = GregTech_API.sBlockCasings1;
- if (aBlock == aCasingBlock1) {
- if (aMeta > 9 || aMeta < 0) {
- return false;
- }
- else {
- return true;
- }
- }
- else {
- return false;
- }
- }
- private static boolean isBlockPipeCasing(Block aBlock, int aMeta) {
- Block aCasingBlock2 = GregTech_API.sBlockCasings2;
- if (aBlock == aCasingBlock2) {
- int aMetaBronzePipeCasing = 12;
- //int aMetaSteelPipeCasing = 13;
- //int aMetaTitaniumPipeCasing = 14;
- int aMetaTungstenPipeCasing = 15;
- if (aMeta > aMetaTungstenPipeCasing || aMeta < aMetaBronzePipeCasing) {
- return false;
- }
- else {
- return true;
- }
- }
- else {
- return false;
- }
- }
-
- private static AutoMap<Integer> mValidCoilMetaCache;
-
- private static boolean isBlockCoil(Block aBlock, int aMeta) {
- Block aCasingBlock;
- if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
- aCasingBlock = StaticFields59.getBlockCasings5();
- }
- else {
- aCasingBlock = GregTech_API.sBlockCasings1;
- }
- // Cache the meta values for later
- if (mValidCoilMetaCache == null || mValidCoilMetaCache.isEmpty()) {
- AutoMap<Integer> aValidCoilMeta = new AutoMap<Integer>();
- // Only use the right meta values available.
- if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
- aValidCoilMeta = Meta_GT_Proxy.GT_ValidHeatingCoilMetas;
- }
- else {
- aValidCoilMeta.put(12);
- aValidCoilMeta.put(13);
- aValidCoilMeta.put(14);
- }
- mValidCoilMetaCache = aValidCoilMeta;
- }
- if (aBlock == aCasingBlock) {
- for (int i: mValidCoilMetaCache.values()) {
- if (i == aMeta) {
- return true;
- }
- }
- }
- return false;
- }
-
-
- @Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
-
- int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 3;
- int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 3;
-
- log("Checking ChemPlant Structure");
-
- // Require Air above controller
- boolean aAirCheck = aBaseMetaTileEntity.getAirOffset(0, 1, 0);
-
- if (!aAirCheck) {
- log("No Air Above Controller");
- return false;
- } else {
-
- //String aName = aInitStructureCheck != null ? ItemUtils.getLocalizedNameOfBlock(aInitStructureCheck, aInitStructureCheckMeta) : "Air";
-
- mSolidCasingTier = getSolidCasingTierCheck(aBaseMetaTileEntity, xDir, zDir);
- mMachineCasingTier = getMachineCasingTierCheck(aBaseMetaTileEntity, xDir, zDir);
-
- log("Initial Casing Check Complete, Solid Casing Tier: "+mSolidCasingTier+", Machine Casing Tier: "+mMachineCasingTier);
-
- int aSolidCasingCount = 0;
- int aMachineCasingCount = 0;
- int aPipeCount = 0;
- int aCoilCount = 0;
-
- aSolidCasingCount = checkSolidCasings(aBaseMetaTileEntity, aStack, xDir, zDir);
- aMachineCasingCount = checkMachineCasings(aBaseMetaTileEntity, aStack, xDir, zDir);
- aPipeCount = checkPipes(aBaseMetaTileEntity, aStack, xDir, zDir);
- aCoilCount = checkCoils(aBaseMetaTileEntity, aStack, xDir, zDir);
-
- log("Casing Counts: ");
- log("Solid: "+aSolidCasingCount+", Machine: "+aMachineCasingCount);
- log("Pipe: "+aPipeCount+", Coil: "+aCoilCount);
-
-
- log("Casing Tiers: ");
- log("Solid: "+getSolidCasingTier()+", Machine: "+getMachineCasingTier());
- log("Pipe: "+getPipeCasingTier()+", Coil: "+getCoilTier());
-
- // Attempt to sync fields here, so that it updates client side values.
- aBaseMetaTileEntity.getWorld().markBlockForUpdate(aBaseMetaTileEntity.getXCoord(), aBaseMetaTileEntity.getYCoord(), aBaseMetaTileEntity.getZCoord());
-
-
-
- // Minimum 80/93 Solid Casings
- if (aSolidCasingCount < 80) {
- log("Not enough solid casings. Found "+aSolidCasingCount+", require: 80.");
- return false;
- }
- if (aMachineCasingCount != 57) {
- log("Not enough machine casings. Found "+aMachineCasingCount+", require: 57.");
- return false;
- }
- if (aPipeCount != 18) {
- log("Not enough pipe casings. Found "+aPipeCount+", require: 18.");
- return false;
- }
- if (aCoilCount != 27) {
- log("Not enough coils. Found "+aCoilCount+", require: 27.");
- return false;
- }
- /*if (mCatalystBuses.size() != 1) {
- log("A Catalyst Bus is Required.");
- return false;
- }*/
-
- log("Structure Check Complete!");
-
- return true;
- }
- }
-
-
- public int checkCoils(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack, int aOffsetX, int aOffsetZ) {
- int tAmount = 0;
- int aCurrentCoilMeta = -1;
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- for (int h = 0; h < 8; h++) {
- if (h == 1 || h == 3 || h == 5) {
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, h, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, h, aOffsetZ + j);
- if (isBlockCoil(aBlock, aMeta)) {
- if (aCurrentCoilMeta < 0) {
- aCurrentCoilMeta = aMeta;
- }
- if (aCurrentCoilMeta != aMeta) {
- return tAmount;
- }
- else {
- tAmount++;
- }
- }
- }
- }
- }
- }
-
- if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
- this.mCoilTier = (aCurrentCoilMeta+1);
- }
- else {
- if (aCurrentCoilMeta == 12) {
- this.mCoilTier = 1;
- }
- else if (aCurrentCoilMeta == 13) {
- this.mCoilTier = 2;
- }
- else if (aCurrentCoilMeta == 14) {
- this.mCoilTier = 3;
- }
- else {
- this.mCoilTier = 0;
- }
- }
-
- return tAmount;
- }
-
-
- public int checkPipes(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack, int aOffsetX, int aOffsetZ) {
- int tAmount = 0;
- int aCurrentPipeMeta = -1;
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- for (int h = 0; h < 8; h++) {
- if (h == 2 || h == 4) {
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, h, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, h, aOffsetZ + j);
- if (isBlockPipeCasing(aBlock, aMeta)) {
- if (aCurrentPipeMeta < 0) {
- aCurrentPipeMeta = aMeta;
- }
- if (aCurrentPipeMeta != aMeta) {
- return tAmount;
- }
- else {
- tAmount++;
- }
- }
- }
- }
- }
- }
-
- if (aCurrentPipeMeta == 12) {
- this.mPipeCasingTier = 1;
- }
- else if (aCurrentPipeMeta == 13) {
- this.mPipeCasingTier = 2;
- }
- else if (aCurrentPipeMeta == 14) {
- this.mPipeCasingTier = 3;
- }
- else if (aCurrentPipeMeta == 15) {
- this.mPipeCasingTier = 4;
- }
- else {
- this.mPipeCasingTier = 0;
- }
-
- return tAmount;
- }
-
-
- public int checkSolidCasings(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack, int aOffsetX, int aOffsetZ) {
-
- int tAmount = 0;
-
- // Only check a 7x7 ring
- for (int i = -3; i < 4; i++) {
- for (int j = -3; j < 4; j++) {
- // If we are on the 7x7 ring, proceed
- if (i == -3 || i == 3 || j == -3 || j == 3) {
- IGregTechTileEntity aTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(aOffsetX + i, 0, aOffsetZ + j);
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, 0, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, 0, aOffsetZ + j);
-
- if (aTileEntity != null) {
-
- if (this.addToMachineList(aTileEntity)) {
- continue;
- }
- else {
- final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
- if (aMetaTileEntity == null) {
- log("Error counting Bottom Layer Casing Ring. Bad Tile Entity. Found "+aTileEntity.getInventoryName());
- return tAmount;
- }
- //Handle controller
- if (aMetaTileEntity instanceof GregtechMTE_ChemicalPlant) {
- continue;
- }
- else {
- log("Error counting Bottom Layer Casing Ring. Bad Tile Entity. Found "+aMetaTileEntity.getInventoryName());
- return tAmount;
- }
- }
- }
- else {
- if (isBlockSolidCasing(mSolidCasingTier, aBlock, aMeta)) {
- tAmount++;
- }
- else {
- log("Error counting Bottom Layer Casing Ring. Found "+aBlock.getLocalizedName()+":"+aMeta);
- return tAmount;
- }
- }
- }
- }
- }
-
- // Check 5 layers Pillars
- for (int r=1;r<6;r++) {
- // Check Each Pillar/Corner
- for (int aPillar=0;aPillar<4;aPillar++) {
- int i = 0;
- int j = 0;
- if (aPillar == 0) {
- i = -3;
- j = -3;
- }
- else if (aPillar == 1) {
- i = 3;
- j = 3;
- }
- else if (aPillar == 2) {
- i = -3;
- j = 3;
- }
- else if (aPillar == 3) {
- i = 3;
- j = -3;
- }
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, r, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, r, aOffsetZ + j);
- if (isBlockSolidCasing(mSolidCasingTier, aBlock, aMeta)) {
- tAmount++;
- }
- else {
- log("Error counting Pillars. Found "+ItemUtils.getLocalizedNameOfBlock(aBlock, aMeta));
- return tAmount;
- }
- }
- }
-
-
- // Check top layer 7x7
- for (int i = -3; i < 4; i++) {
- for (int j = -3; j < 4; j++) {
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, 6, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, 6, aOffsetZ + j);
- if (isBlockSolidCasing(mSolidCasingTier, aBlock, aMeta)) {
- tAmount++;
- }
- else {
- log("Error counting Top Layer casings. Found "+ItemUtils.getLocalizedNameOfBlock(aBlock, aMeta));
- return tAmount;
- }
- }
- }
-
- return tAmount;
- }
-
-
- public int checkMachineCasings(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack, int aOffsetX, int aOffsetZ) {
- int tAmount = 0;
- int aHeight = 0;
- // Iterate once for each layer
- for (int aIteration=0;aIteration<3;aIteration++) {
- // Dynamically set height
- aHeight = (aIteration == 0 ? 0 : aIteration == 1 ? 1 : 5);
- // Only check a 5x5 area
- for (int i = -2; i < 3; i++) {
- for (int j = -2; j < 3; j++) {
- // If we are on the 5x5 ring, proceed
- if (i == -2 || i == 2 || j == -2 || j == 2) {
- // If the second axis is on the outer ring, continue
- if (i < -2 || i > 2 || j < -2 || j > 2) {
- continue;
- }
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, aHeight, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, aHeight, aOffsetZ + j);
- if (isBlockMachineCasing(aBlock, aMeta)) {
- tAmount++;
- }
- else {
- return tAmount;
- }
- }
- }
- }
- }
-
- // Check bottom layer inner 3x3
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- Block aBlock = aBaseMetaTileEntity.getBlockOffset(aOffsetX + i, 0, aOffsetZ + j);
- int aMeta = aBaseMetaTileEntity.getMetaIDOffset(aOffsetX + i, 0, aOffsetZ + j);
- if (isBlockMachineCasing(aBlock, aMeta)) {
- tAmount++;
- }
- else {
- return tAmount;
- }
- }
- }
-
- return tAmount;
- }
-
- public int getSolidCasingTierCheck(IGregTechTileEntity aBaseMetaTileEntity, int xDir, int zDir) {
- Block aInitStructureCheck;
- int aInitStructureCheckMeta;
- if (xDir == 0) {
- aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(zDir, 1, 0);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(zDir, 1, 0);
- }
- else {
- aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(0, 1, xDir);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(0, 1, xDir);
- }
- for (int aTier : mTieredBlockRegistry.keySet()) {
- Triplet<Block, Integer, Integer> aData = mTieredBlockRegistry.get(aTier);
- if (aData.getValue_1() == aInitStructureCheck && aData.getValue_2() == aInitStructureCheckMeta) {
- return aTier;
- }
- }
- return 0;
- }
-
@Override
public boolean addToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
@@ -655,38 +499,6 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
return super.addToMachineList(aTileEntity, aBaseCasingIndex);
}
- public int getMachineCasingTierCheck(IGregTechTileEntity aBaseMetaTileEntity, int xDir, int zDir) {
- Block aInitStructureCheck;
- int aInitStructureCheckMeta;
- log(""+xDir+", "+zDir);
- if (xDir == 0) {
- if (zDir > 0) {
- aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(0, 0, 1);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(0, 0, 1);
- }
- else {
- aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(0, 0, -1);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(0, 0, -1);
- }
- }
- else {
- if (xDir > 0) {
- aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(1, 0, 0);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(1, 0, 0);
- }
- else {
- aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(-1, 0, 0);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(-1, 0, 0);
- }
- }
- if (isBlockMachineCasing(aInitStructureCheck, aInitStructureCheckMeta)) {
- log("Using Meta "+aInitStructureCheckMeta);
- return aInitStructureCheckMeta;
- }
- return 0;
- }
-
-
@Override
public int getMaxEfficiency(final ItemStack aStack) {
return 10000;
@@ -753,7 +565,7 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
public boolean checkRecipeGeneric(
ItemStack[] aItemInputs, FluidStack[] aFluidInputs,
int aMaxParallelRecipes, int aEUPercent,
- int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe) {
+ int aSpeedBonusPercent, int aOutputChanceRoll, GT_Recipe aRecipe, boolean isOC) {
// Based on the Processing Array. A bit overkill, but very flexible.
@@ -1209,14 +1021,10 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
}
-
-
/*
* Catalyst Handling
*/
-
-
@Override
public ArrayList<ItemStack> getStoredInputs() {
ArrayList<ItemStack> tItems = super.getStoredInputs();
@@ -1229,8 +1037,4 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase {
return tItems;
}
-
-
-
-
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_SHSteam.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_SHSteam.java
index 2de54c5008..f52f02b5de 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_SHSteam.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_SHSteam.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines;
import java.util.ArrayList;
@@ -175,3 +176,4 @@ public class GT_MTE_LargeTurbine_SHSteam extends GregtechMetaTileEntity_LargerTu
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_Steam.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_Steam.java
index 808476bb74..2e6f6149e7 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_Steam.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_Steam.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines;
import static gtPlusPlus.core.lib.CORE.RANDOM;
@@ -185,3 +186,4 @@ public class GT_MTE_LargeTurbine_Steam extends GregtechMetaTileEntity_LargerTurb
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GregtechMetaTileEntity_LargerTurbineBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GregtechMetaTileEntity_LargerTurbineBase.java
index 2ca2521d55..9da724c6eb 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GregtechMetaTileEntity_LargerTurbineBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GregtechMetaTileEntity_LargerTurbineBase.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines;
import java.util.ArrayList;
@@ -435,16 +436,34 @@ public abstract class GregtechMetaTileEntity_LargerTurbineBase extends GregtechM
}
String[] ret = new String[]{
// 8 Lines available for information panels
- tRunning + ": " + EnumChatFormatting.RED+mEUt+EnumChatFormatting.RESET+" EU/t", /* 1 */
- tMaintainance, /* 2 */
- StatCollector.translateToLocal("GT5U.turbine.efficiency")+": "+EnumChatFormatting.YELLOW+(mEfficiency/100F)+EnumChatFormatting.RESET+"%", /* 2 */
- StatCollector.translateToLocal("GT5U.multiblock.energy")+": " + EnumChatFormatting.GREEN + Long.toString(storedEnergy) + EnumChatFormatting.RESET +" EU / "+ /* 3 */
+ tRunning + ": " + EnumChatFormatting.RED+mEUt+EnumChatFormatting.RESET+" EU/t", */
+/* 1 *//*
+
+ tMaintainance, */
+/* 2 *//*
+
+ StatCollector.translateToLocal("GT5U.turbine.efficiency")+": "+EnumChatFormatting.YELLOW+(mEfficiency/100F)+EnumChatFormatting.RESET+"%", */
+/* 2 *//*
+
+ StatCollector.translateToLocal("GT5U.multiblock.energy")+": " + EnumChatFormatting.GREEN + Long.toString(storedEnergy) + EnumChatFormatting.RESET +" EU / "+ */
+/* 3 *//*
+
EnumChatFormatting.YELLOW + Long.toString(maxEnergy) + EnumChatFormatting.RESET +" EU",
- StatCollector.translateToLocal("GT5U.turbine.flow")+": "+EnumChatFormatting.YELLOW+MathUtils.safeInt((long)realOptFlow)+EnumChatFormatting.RESET+" L/t" + /* 4 */
- EnumChatFormatting.YELLOW+" ("+(looseFit?StatCollector.translateToLocal("GT5U.turbine.loose"):StatCollector.translateToLocal("GT5U.turbine.tight"))+")", /* 5 */
- StatCollector.translateToLocal("GT5U.turbine.fuel")+": "+EnumChatFormatting.GOLD+storedFluid+EnumChatFormatting.RESET+"L", /* 6 */
- StatCollector.translateToLocal("GT5U.turbine.dmg")+": "+EnumChatFormatting.RED+Integer.toString(tDura)+EnumChatFormatting.RESET+"%", /* 7 */
- StatCollector.translateToLocal("GT5U.multiblock.pollution")+": "+ EnumChatFormatting.GREEN + mPollutionReduction+ EnumChatFormatting.RESET+" %" /* 8 */
+ StatCollector.translateToLocal("GT5U.turbine.flow")+": "+EnumChatFormatting.YELLOW+MathUtils.safeInt((long)realOptFlow)+EnumChatFormatting.RESET+" L/t" + */
+/* 4 *//*
+
+ EnumChatFormatting.YELLOW+" ("+(looseFit?StatCollector.translateToLocal("GT5U.turbine.loose"):StatCollector.translateToLocal("GT5U.turbine.tight"))+")", */
+/* 5 *//*
+
+ StatCollector.translateToLocal("GT5U.turbine.fuel")+": "+EnumChatFormatting.GOLD+storedFluid+EnumChatFormatting.RESET+"L", */
+/* 6 *//*
+
+ StatCollector.translateToLocal("GT5U.turbine.dmg")+": "+EnumChatFormatting.RED+Integer.toString(tDura)+EnumChatFormatting.RESET+"%", */
+/* 7 *//*
+
+ StatCollector.translateToLocal("GT5U.multiblock.pollution")+": "+ EnumChatFormatting.GREEN + mPollutionReduction+ EnumChatFormatting.RESET+" %" */
+/* 8 *//*
+
};
if (!this.getClass().getName().contains("Steam"))
ret[4]=StatCollector.translateToLocal("GT5U.turbine.flow")+": "+EnumChatFormatting.YELLOW+MathUtils.safeInt((long)realOptFlow)+EnumChatFormatting.RESET+" L/t";
@@ -641,3 +660,4 @@ public abstract class GregtechMetaTileEntity_LargerTurbineBase extends GregtechM
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_MultiTank.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_MultiTank.java
index 2613e48e2c..6ed14eb2a9 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_MultiTank.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_MultiTank.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.storage;
import java.util.ArrayList;
@@ -74,7 +75,8 @@ extends GregtechMeta_MultiBlockBase {
@Override
public void saveNBTData(final NBTTagCompound aNBT) {
super.saveNBTData(aNBT);
- /*final NBTTagCompound gtCraftingComponentsTag = aNBT.getCompoundTag("GT.CraftingComponents");
+ */
+/*final NBTTagCompound gtCraftingComponentsTag = aNBT.getCompoundTag("GT.CraftingComponents");
if (gtCraftingComponentsTag != null){
Utils.LOG_WARNING("Got Crafting Tag");
@@ -98,13 +100,15 @@ extends GregtechMeta_MultiBlockBase {
aNBT.setTag("GT.CraftingComponents", gtCraftingComponentsTag);
}
- }*/
+ }*//*
+
}
@Override
public void loadNBTData(final NBTTagCompound aNBT) {
super.loadNBTData(aNBT);
- /*final NBTTagCompound gtCraftingComponentsTag = aNBT.getCompoundTag("GT.CraftingComponents");
+ */
+/*final NBTTagCompound gtCraftingComponentsTag = aNBT.getCompoundTag("GT.CraftingComponents");
String xFluid = null;
int xAmount = 0;
if (gtCraftingComponentsTag.hasNoTags()){
@@ -131,7 +135,8 @@ extends GregtechMeta_MultiBlockBase {
Utils.LOG_WARNING("Setting Internal Tank, loading "+xAmount+"L of "+xFluid);
this.setInternalTank(xFluid, xAmount);
}
- }*/
+ }*//*
+
}
private boolean setInternalTank(final String fluidName, final int amount){
@@ -303,7 +308,9 @@ extends GregtechMeta_MultiBlockBase {
Logger.WARNING("Okay - 3");
if ((rList.get(0).getKey().mFluid != null) && (rList.get(0).getKey().mFluid.amount > 0)){
Logger.WARNING("Okay - 4");
- Logger.WARNING("Okay - 1"+" rList.get(0).getKey().mFluid.amount: "+rList.get(0).getKey().mFluid.amount /*+" internalStorageTank:"+internalStorageTank.amount*/);
+ Logger.WARNING("Okay - 1"+" rList.get(0).getKey().mFluid.amount: "+rList.get(0).getKey().mFluid.amount */
+/*+" internalStorageTank:"+internalStorageTank.amount*//*
+);
final FluidStack tempFluidStack = rList.get(0).getKey().mFluid;
final Fluid tempFluid = tempFluidStack.getFluid();
this.internalStorageTank = FluidUtils.getFluidStack(tempFluid.getName(), tempFluidStack.amount);
@@ -380,8 +387,10 @@ extends GregtechMeta_MultiBlockBase {
//mOutputHatches.get(0).mFluid.amount = tempResult;
this.internalStorageTank.amount = (tempCurrentStored-adder);
Logger.WARNING("Okay - 3.1.3"+" internalTankStorage: "+this.internalStorageTank.amount +"L | output hatch contains: "+this.mOutputHatches.get(0).mFluid.amount+"L of "+this.mOutputHatches.get(0).mFluid.getFluid().getName());
- /*if (internalStorageTank.amount <= 0)
- internalStorageTank = null;*/
+ */
+/*if (internalStorageTank.amount <= 0)
+ internalStorageTank = null;*//*
+
}
Logger.WARNING("Tank ok.");
return true;
@@ -460,7 +469,8 @@ extends GregtechMeta_MultiBlockBase {
return tAmount >= 16;
}
- /*public int countCasings() {
+ */
+/*public int countCasings() {
Utils.LOG_INFO("Counting Machine Casings");
try{
if (this.getBaseMetaTileEntity().getWorld() == null){
@@ -530,7 +540,8 @@ extends GregtechMeta_MultiBlockBase {
//Utils.LOG_INFO("Your Multitank can be 20 blocks tall.");
Utils.LOG_INFO("Casings Count: "+tAmount+" Valid Multiblock: "+(tAmount >= 16)+" Tank Storage Capacity:"+getMaximumTankStorage(tAmount)+"L");
return tAmount;
- }*/
+ }*//*
+
@Override
public int getMaxEfficiency(final ItemStack aStack) {
@@ -568,6 +579,7 @@ extends GregtechMeta_MultiBlockBase {
}
private boolean tryForceNBTUpdate(){
+*/
/*
//Block is invalid.
if ((this == null) || (this.getBaseMetaTileEntity() == null)){
@@ -602,7 +614,8 @@ extends GregtechMeta_MultiBlockBase {
this.getBaseMetaTileEntity().getWorld().markBlockForUpdate(x, y, z);
//Mark block dirty, let chunk know it's data has changed and it must be saved to disk. (Albeit slowly)
- this.getBaseMetaTileEntity().markDirty();*/
+ this.getBaseMetaTileEntity().markDirty();*//*
+
return true;
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
index 3bb89cd315..b09c5e611b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/storage/GregtechMetaTileEntity_PowerSubStationController.java
@@ -2,24 +2,26 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.storage;
import java.util.ArrayList;
-import gregtech.api.enums.GT_Values;
+import com.gtnewhorizon.structurelib.StructureLibAPI;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.IStructureElement;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
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.MetaTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.handler.BookHandler;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.math.MathUtils;
-import gtPlusPlus.core.util.minecraft.NBTUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.preloader.asm.AsmConfig;
import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_PowerSubStation;
@@ -33,7 +35,11 @@ import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraft.world.World;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMeta_MultiBlockBase {
@@ -46,6 +52,10 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
private final int ENERGY_TAX = 2;
+ private int mCasing;
+ private int[] cellCount = new int[6];
+ private IStructureDefinition<GregtechMetaTileEntity_PowerSubStationController> STRUCTURE_DEFINITION = null;
+
//TecTech Support
public ArrayList<GT_MetaTileEntity_Hatch> mAllEnergyHatches = new ArrayList<GT_MetaTileEntity_Hatch>();
public ArrayList<GT_MetaTileEntity_Hatch> mAllDynamoHatches = new ArrayList<GT_MetaTileEntity_Hatch>();
@@ -64,20 +74,23 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
}
@Override
- public String[] getTooltip() {
- return new String[]{
- "[BUG] GUI does not work until structure is assembled correctly. (Do Not Report issue)",
- "Consumes " + this.ENERGY_TAX + "% of the average voltage of all energy type hatches",
- "Does not require maintenance",
- "Can be built with variable height between " + (CELL_HEIGHT_MIN + 2) + "-" + (CELL_HEIGHT_MAX + 2) + "",
- "Hatches can be placed nearly anywhere",
- "HV Energy/Dynamo Hatches are the lowest tier you can use",
- CORE.GTNH ? "Supports voltages >= UHV using MAX tier components." : "Supports upto "+GT_Values.VOLTAGE_NAMES[GT_Values.VOLTAGE_NAMES.length-1],
- "Controller (Bottom, Centre)",
- "Size(WxHxD): External 5xHx5, Sub-Station External Casings",
- "Size(WxHxD): Internal 3x(H-2)x3, Vanadium Redox Power Cells",
- "Read '"+BookHandler.ItemBookWritten_MultiPowerStorage.getDisplayName()+"' for more info.",
- };
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("[BUG] GUI does not work until structure is assembled correctly. (Do Not Report issue)")
+ .addInfo("Consumes " + this.ENERGY_TAX + "% of the average voltage of all energy type hatches")
+ .addInfo("Does not require maintenance")
+ .addInfo("Can be built with variable height between " + (CELL_HEIGHT_MIN + 2) + "-" + (CELL_HEIGHT_MAX + 2) + "")
+ .addInfo("Hatches can be placed nearly anywhere")
+ .addInfo("HV Energy/Dynamo Hatches are the lowest tier you can use")
+ .addInfo("Supports voltages >= UHV using MAX tier components.")
+ .addSeparator()
+ .addController("Bottom Center")
+ .addCasingInfo("Sub-Station External Casings", 10)
+ .addDynamoHatch("Any Casing", 1)
+ .addEnergyHatch("Any Casing", 1)
+ .toolTipFinisher("GT++");
+ return tt;
}
@Override
@@ -95,13 +108,22 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
@Override
public boolean hasSlotInGUI() {
- return false;
+ return true;
}
@Override
public String getCustomGUIResourceName() {
return null;
- }
+ }
+
+ @Override
+ public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
+ if (mBatteryCapacity <= 0) return false;
+ if (!aBaseMetaTileEntity.isClientSide()) {
+ aBaseMetaTileEntity.openGUI(aPlayer);
+ }
+ return true;
+ }
@Override
public Object getClientGUI(final int aID, final InventoryPlayer aPlayerInventory, final IGregTechTileEntity aBaseMetaTileEntity) {
@@ -145,6 +167,20 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
}
}
+ public static int getMetaFromTier(int tier) {
+ if (tier == 4) return 7;
+ if (tier >= 5 && tier <= 9) return tier - 1;
+ return 0;
+ }
+
+ public static Block getBlockFromTier(int tier) {
+ switch (tier) {
+ case 4: return ModBlocks.blockCasings2Misc;
+ case 5: case 6: case 7: case 8: case 9: return ModBlocks.blockCasings3Misc;
+ default: return null;
+ }
+ }
+
public static int getMaxHatchTier(int aCellTier) {
switch(aCellTier) {
case 9:
@@ -163,174 +199,168 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
public static final int CELL_HEIGHT_MIN = 2;
@Override
- public boolean checkMultiblock(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) {
- Logger.INFO("Checking structure for Industrial Power Sub-Station.");
- final int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 2;
- final int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 2;
-
- this.mTecTechDynamoHatches.clear();
- this.mAllDynamoHatches.clear();
-
- this.mTecTechEnergyHatches.clear();
- this.mAllEnergyHatches.clear();
-
- boolean tFoundCeiling = false;
- int tCasingCount = 0;
- int tOverallCellTier = -1;
- int tCellCount = 0;
-
- for (int yOff = 0; yOff < CELL_HEIGHT_MAX + 2; yOff++) {
- if (tFoundCeiling) continue;
- if (yOff == CELL_HEIGHT_MAX + 1) tFoundCeiling = true;
-
- for (int i = -2; i < 3; i++) {
- for (int j = -2; j < 3; j++) {
- int xOff = xDir + i, zOff = zDir + j;
-
- final IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xOff, yOff, zOff);
- if (tTileEntity == aBaseMetaTileEntity) continue;
-
- final Block tBlock = aBaseMetaTileEntity.getBlockOffset(xOff, yOff, zOff);
- final byte tMeta = aBaseMetaTileEntity.getMetaIDOffset(xOff, yOff, zOff);
-
- if (yOff == 0) {
- if (tBlock == ModBlocks.blockCasings2Misc && tMeta == 8) {
- tCasingCount++;
- } else if (!this.addToMachineList(tTileEntity, TAE.GTPP_INDEX(24))) {
- checkMachineProblem("Unexpected block in machine floor", xOff, yOff, zOff);
- return false;
- }
- } else {
- int tCellTier = -1;
- if (i == -2 || i == 2 || j == -2 || j == 2) {
- if (tBlock == ModBlocks.blockCasings2Misc && tMeta == 8) {
- tCasingCount++;
- } else if (!this.addToMachineList(tTileEntity, TAE.GTPP_INDEX(24))) {
- checkMachineProblem("Unexpected block in machine wall", xOff, yOff, zOff);
- return false;
- }
- } else {
- if (tBlock == ModBlocks.blockCasings2Misc && tMeta == 8) {
- if (yOff > CELL_HEIGHT_MIN && i == -1 && j == -1) {
- tFoundCeiling = true;
- } else if (!tFoundCeiling) {
- checkMachineProblem("Casing found where cell expected", xOff, yOff, zOff);
- return false;
- }
- tCasingCount++;
- } else if (this.addToMachineList(tTileEntity, TAE.GTPP_INDEX(24))) {
- if (yOff > 2 && i == -1 && j == -1) {
- tFoundCeiling = true;
- } else if (!tFoundCeiling) {
- checkMachineProblem("Hatch found where cell expected", xOff, yOff, zOff);
- return false;
- }
- } else if ((tCellTier = getCellTier(tBlock, tMeta)) != -1) {
- if (tFoundCeiling) {
- checkMachineProblem("Cell found where casing/hatch expected", xOff, yOff, zOff);
- return false;
- } else {
- if (tOverallCellTier == -1) {
- tOverallCellTier = tCellTier;
- tCellCount++;
- } else if (tOverallCellTier != tCellTier) {
- checkMachineProblem("Mismatched cell found, expected tier " + tOverallCellTier + " cell", xOff, yOff, zOff);
- return false;
- } else {
- tCellCount++;
- }
- }
- } else {
- checkMachineProblem("Unexpected block in battery core", xOff, yOff, zOff);
- return false;
- }
- }
- }
+ public IStructureDefinition<GregtechMetaTileEntity_PowerSubStationController> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_PowerSubStationController>builder()
+ .addShape(mName + "bottom", transpose(new String[][]{
+ {"CC~CC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"}
+ }))
+ .addShape(mName + "mid", transpose(new String[][]{
+ {"CCCCC", "CHHHC", "CHHHC", "CHHHC", "CCCCC"}
+ }))
+ .addShape(mName + "top", transpose(new String[][]{
+ {"CCCCC", "CCCCC", "CCCCC", "CCCCC", "CCCCC"}
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_PowerSubStationController::addPowerSubStationList, TAE.GTPP_INDEX(24), 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ ModBlocks.blockCasings2Misc, 8
+ )
+ )
+ )
+ )
+ .addElement(
+ 'H',
+ ofChain(
+ onElementPass(
+ x -> ++x.cellCount[0],
+ ofCell(4)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[1],
+ ofCell(5)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[2],
+ ofCell(6)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[3],
+ ofCell(7)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[4],
+ ofCell(8)
+ ),
+ onElementPass(
+ x -> ++x.cellCount[5],
+ ofCell(9)
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
- }
+ public static <T> IStructureElement<T> ofCell(int aIndex) {
+ return new IStructureElement<T>() {
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ Block block = world.getBlock(x, y, z);
+ int meta = world.getBlockMetadata(x, y, z);
+ int tier = getCellTier(block, meta);
+ return aIndex == tier;
}
- }
- if (tOverallCellTier == -1) {
- checkMachineProblem("No cells in machine (this really shouldn't happen!)");
- return false;
- }
+ public int getIndex(int size) {
+ if (size > 6) size = 6;
+ return size + 3;
+ }
- if (tCasingCount < 35) {
- checkMachineProblem("Not enough casings (needed 35, found " + tCasingCount + ")");
- return false;
- }
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ StructureLibAPI.hintParticle(world, x, y, z, getBlockFromTier(getIndex(trigger.stackSize)), getMetaFromTier(getIndex(trigger.stackSize)));
+ return true;
+ }
- /**
- * TecTech Support, this allows adding Multi-Amp dynamos.
- */
- mAllEnergyHatches.addAll(this.mEnergyHatches);
- mAllDynamoHatches.addAll(this.mDynamoHatches);
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ return world.setBlock(x, y, z, getBlockFromTier(getIndex(trigger.stackSize)), getMetaFromTier(getIndex(trigger.stackSize)), 3);
+ }
+ };
+ }
- if (LoadedMods.TecTech) {
- mAllEnergyHatches.addAll(this.mTecTechEnergyHatches);
- mAllDynamoHatches.addAll(this.mTecTechDynamoHatches);
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ int layer = Math.min(stackSize.stackSize + 3, 18);
+ buildPiece(mName + "bottom" , stackSize, hintsOnly, 2, 0, 0);
+ for (int i = 1; i < layer - 1; i++) {
+ buildPiece(mName + "mid", stackSize, hintsOnly, 2, i, 0);
}
+ buildPiece(mName + "top", stackSize, hintsOnly, 2, layer - 1, 0);
+ }
-
- if (this.mMaintenanceHatches.size() != 1) {
- checkMachineProblem("Needed 1 maintenance hatch, found " + this.mMaintenanceHatches.size());
- return false;
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ mAllEnergyHatches.clear();
+ mAllDynamoHatches.clear();
+ for (int i = 0; i < 6; i++) {
+ cellCount[i] = 0;
}
- if (this.mAllEnergyHatches.size() < 1) {
- checkMachineProblem("Needed at least 1 energy hatch, found 0");
+ if (!checkPiece(mName + "bottom", 2, 0, 0))
return false;
+ int layer = 1;
+ while (checkPiece(mName + "mid", 2, layer, 0)) {
+ layer ++;
}
- if (this.mAllDynamoHatches.size() < 1) {
- checkMachineProblem("Needed at least 1 dynamo hatch, found 0");
+ if (layer > 19 || !checkPiece(mName + "top", 2, layer, 0))
return false;
- }
-
- // Find average EU throughput
- int totalEuThroughput = 0;
- int hatchCount = 0;
-
- int aMaxHatchTier = getMaxHatchTier(tOverallCellTier);
-
- for (GT_MetaTileEntity_Hatch re : this.mAllEnergyHatches) {
- long tier = re.getOutputTier();
- if(tier > aMaxHatchTier) {
- checkMachineProblem("Energy hatch (tier " + tier + ") is too strong for cells (tier " + aMaxHatchTier + ")");
- return false;
+ int level = 0;
+ for (int i = 0; i < 6; i++) {
+ if (cellCount[i] != 0) {
+ if (level == 0) level = i + 4;
+ else return false;
}
- if(tier < 3) {
- checkMachineProblem("Energy hatch (tier " + tier + ") is too weak for cells (tier " + aMaxHatchTier + ")");
- return false;
- }
- totalEuThroughput += re.maxEUInput();
- hatchCount++;
}
-
- for (GT_MetaTileEntity_Hatch re : this.mAllDynamoHatches) {
- long tier = re.getInputTier();
- if(tier > aMaxHatchTier) {
- checkMachineProblem("Dynamo hatch (tier " + tier + ") is too strong for cells (tier " + aMaxHatchTier + ")");
- return false;
- }
- if(tier < 3) {
- checkMachineProblem("Energy hatch (tier " + tier + ") is too weak for cells (tier " + aMaxHatchTier + ")");
- return false;
- }
- totalEuThroughput += re.maxEUOutput();
- hatchCount++;
+ int tier = getMaxHatchTier(level);
+ long volSum = 0;
+ for (GT_MetaTileEntity_Hatch hatch : mAllDynamoHatches) {
+ if (hatch.mTier > tier || hatch.mTier < 3) return false;
+ volSum += (8 << (hatch.mTier * 2));
+ }
+ for (GT_MetaTileEntity_Hatch hatch : mAllEnergyHatches) {
+ if (hatch.mTier > tier || hatch.mTier < 3) return false;
+ volSum += (8 << (hatch.mTier * 2));
}
+ mBatteryCapacity = getCapacityFromCellTier(level) * cellCount[level - 4];
+ if (mAllEnergyHatches.size() + mAllDynamoHatches.size() > 0) {
+ mAverageEuUsage = volSum / (mAllEnergyHatches.size() + mAllDynamoHatches.size());
+ }
+ else mAverageEuUsage = 0;
+ fixAllMaintenanceIssue();
+ return true;
+ }
- if (hatchCount > 0) {
- this.mAverageEuUsage = (totalEuThroughput / hatchCount);
+ public final boolean addPowerSubStationList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
} else {
- // Shouldn't happen
- this.mAverageEuUsage = 0;
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) {
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAllEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy)aMetaTileEntity);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) {
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAllDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)aMetaTileEntity);
+ } if (LoadedMods.TecTech) {
+ if (isThisHatchMultiDynamo(aMetaTileEntity)) {
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAllDynamoHatches.add((GT_MetaTileEntity_Hatch) aMetaTileEntity);
+ } else if (isThisHatchMultiEnergy(aMetaTileEntity)) {
+ ((GT_MetaTileEntity_Hatch)aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ return this.mAllEnergyHatches.add((GT_MetaTileEntity_Hatch) aMetaTileEntity);
+ }
+ }
}
-
- // Only set this here, after the machine check is 100% passed.
- this.fixAllMaintenanceIssue();
- this.mBatteryCapacity = getCapacityFromCellTier(tOverallCellTier) * tCellCount;
- return true;
+ return false;
}
// Define storage capacity of smallest cell tier (EV) and compute higher tiers from it
@@ -384,13 +414,7 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
// Best not to get a long if the Tag Map is holding an int
if (aNBT.hasKey("mAverageEuUsage")) {
- if (NBTUtils.isTagInteger(aNBT, "mAverageEuUsage")) {
- int aAverageTag = aNBT.getInteger("mAverageEuUsage");
- this.mAverageEuUsage = aAverageTag;
- }
- else {
- this.mAverageEuUsage = aNBT.getLong("mAverageEuUsage");
- }
+ this.mAverageEuUsage = aNBT.getLong("mAverageEuUsage");
}
//Usage Stats
@@ -485,7 +509,8 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
this.setEUVar(Math.max(0, this.getEUVar() - mDecrease));
// Input Power
- for (GT_MetaTileEntity_Hatch_OutputBattery tHatch : this.mDischargeHatches) {
+ for (Object THatch : this.mDischargeHatches) {
+ GT_MetaTileEntity_Hatch_OutputBattery tHatch = (GT_MetaTileEntity_Hatch_OutputBattery) THatch;
drawEnergyFromHatch(tHatch);
}
for (GT_MetaTileEntity_Hatch tHatch : this.mAllEnergyHatches) {
@@ -493,7 +518,8 @@ public class GregtechMetaTileEntity_PowerSubStationController extends GregtechMe
}
// Output Power
- for (GT_MetaTileEntity_Hatch_InputBattery tHatch : this.mChargeHatches) {
+ for (Object THatch : this.mChargeHatches) {
+ GT_MetaTileEntity_Hatch_InputBattery tHatch = (GT_MetaTileEntity_Hatch_InputBattery) THatch;
addEnergyToHatch(tHatch);
}
for (GT_MetaTileEntity_Hatch tHatch : this.mAllDynamoHatches) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/TileEntitySolarHeater.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/TileEntitySolarHeater.java
index f7b1764e16..5d8e9d468d 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/TileEntitySolarHeater.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/TileEntitySolarHeater.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.common.tileentities.misc;
import gregtech.api.enums.Textures;
@@ -344,3 +345,4 @@ public class TileEntitySolarHeater extends GT_MetaTileEntity_TieredMachineBlock
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechBedrockPlatforms.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechBedrockPlatforms.java
index 44f97f7179..43a9402be2 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechBedrockPlatforms.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechBedrockPlatforms.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -7,10 +8,11 @@ import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.be
public class GregtechBedrockPlatforms {
//941-945
-
+
public static void run() {
Logger.INFO("Gregtech5u Content | Registering Bedrock Mining Platform.");
GregtechItemList.BedrockMiner_MKI.set(new GregtechMetaTileEntity_BedrockMiningPlatform1(941, "multimachine.tier.01.bedrockminer", "Experimental Deep Earth Drilling Platform - MK I").getStackForm(1));
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechFactoryGradeReplacementMultis.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechFactoryGradeReplacementMultis.java
index 67c54a7699..8340b7088c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechFactoryGradeReplacementMultis.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechFactoryGradeReplacementMultis.java
@@ -4,7 +4,7 @@ import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.GregtechMetaTileEntity_IndustrialVacuumFreezer;
-import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced.GregtechMetaTileEntity_Adv_AssemblyLine;
+//import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced.GregtechMetaTileEntity_Adv_AssemblyLine;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced.GregtechMetaTileEntity_Adv_DistillationTower;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced.GregtechMetaTileEntity_Adv_EBF;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.advanced.GregtechMetaTileEntity_Adv_Fusion_MK4;
@@ -26,9 +26,9 @@ public class GregtechFactoryGradeReplacementMultis {
//31021
GregtechItemList.Machine_Adv_DistillationTower.set(new GregtechMetaTileEntity_Adv_DistillationTower(31021, "multimachine.adv.distillationtower", "Dangote Distillus").getStackForm(1L));
- if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
+ /*if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
GregtechItemList.Machine_Adv_AssemblyLine.set(new GregtechMetaTileEntity_Adv_AssemblyLine(31024, "multimachine.adv.assemblyline", "Compound Fabricator").getStackForm(1L));
- }
+ }*/
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialElementDuplicator.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialElementDuplicator.java
index 5fa9ebdace..59b6d78a4f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialElementDuplicator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialElementDuplicator.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -18,3 +19,4 @@ public class GregtechIndustrialElementDuplicator {
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialFuelRefinery.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialFuelRefinery.java
index bbe23b542c..f83e2966a3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialFuelRefinery.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialFuelRefinery.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -23,4 +24,4 @@ public class GregtechIndustrialFuelRefinery {
"industrialrefinery.controller.tier.single", "Reactor Fuel Processing Plant").getStackForm(1L));
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialGeneratorArray.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialGeneratorArray.java
index cffb3cb734..9bdcf231d0 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialGeneratorArray.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialGeneratorArray.java
@@ -23,4 +23,4 @@ public class GregtechIndustrialGeneratorArray {
"generatorarray.controller.tier.01",
"Large Generator Array").getStackForm(1L));
}
-} \ No newline at end of file
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMultiTank.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMultiTank.java
index 976c12c521..1d723784ac 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMultiTank.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMultiTank.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -28,3 +29,4 @@ public class GregtechIndustrialMultiTank {
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialTreeFarm.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialTreeFarm.java
index 94e0875563..8d259d9d2e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialTreeFarm.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialTreeFarm.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -24,4 +25,4 @@ public class GregtechIndustrialTreeFarm {
.getStackForm(1L));
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLFTR.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLFTR.java
index a9eee53a7c..a4c5316022 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLFTR.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLFTR.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -25,3 +26,4 @@ public class GregtechLFTR {
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLargeTurbinesAndHeatExchanger.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLargeTurbinesAndHeatExchanger.java
index a8e43f8a51..9b9f5fd59b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLargeTurbinesAndHeatExchanger.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLargeTurbinesAndHeatExchanger.java
@@ -2,9 +2,6 @@ package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
-import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Turbine;
-import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines.GT_MTE_LargeTurbine_SHSteam;
-import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines.GT_MTE_LargeTurbine_Steam;
public class GregtechLargeTurbinesAndHeatExchanger {
@@ -17,9 +14,9 @@ public class GregtechLargeTurbinesAndHeatExchanger {
}
private static void run1() {
- GregtechItemList.Large_Steam_Turbine.set(new GT_MTE_LargeTurbine_Steam(865, "multimachine.largerturbine", "XL Turbo Steam Turbine").getStackForm(1L));
+ /* GregtechItemList.Large_Steam_Turbine.set(new GT_MTE_LargeTurbine_Steam(865, "multimachine.largerturbine", "XL Turbo Steam Turbine").getStackForm(1L));
GregtechItemList.Large_HPSteam_Turbine.set(new GT_MTE_LargeTurbine_SHSteam(866, "multimachine.largerhpturbine", "XL Turbo HP Steam Turbine").getStackForm(1L));
GregtechItemList.Hatch_Turbine_Rotor.set(new GT_MetaTileEntity_Hatch_Turbine(30010, "hatch.turbine", "Rotor Assembly", 8).getStackForm(1L));
-
+ */
}
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java
index fe69ad33e0..aea40c564c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechMiniRaFusion.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gregtech.api.util.GT_Recipe;
@@ -41,3 +42,4 @@ public class GregtechMiniRaFusion {
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNaqReactor.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNaqReactor.java
index 4667c4ab42..e2c63c77da 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNaqReactor.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNaqReactor.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -20,3 +21,4 @@ public class GregtechNaqReactor {
}
}
+*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSolarTower.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSolarTower.java
index 1ea1339755..d7f8f7f4d5 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSolarTower.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSolarTower.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -28,4 +29,4 @@ public class GregtechSolarTower {
0).getStackForm(1L));
}
-} \ No newline at end of file
+}*/
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTeslaTower.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTeslaTower.java
index 3f7fb9ae0b..1c5181130b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTeslaTower.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTeslaTower.java
@@ -1,3 +1,4 @@
+/*
package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.api.objects.Logger;
@@ -9,7 +10,8 @@ public class GregtechTeslaTower {
public static void run() {
Logger.INFO("Gregtech5u Content | Registering Tesla Tower.");
GregtechItemList.TelsaTower.set(new GregtechMTE_TeslaTower(984, "multimachine.telsatower", "Tesla's Last Testament").getStackForm(1));
-
+
}
}
+*/