From 9002a295df00578f43ec54bd54474870b7689d7c Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 7 Feb 2022 13:52:58 +0100 Subject: [PATCH] salient green: the wonder of life in liquid, sticky form --- .../java/com/hbm/inventory/fluid/Fluids.java | 4 +- .../hbm/inventory/gui/GUIMachineRefinery.java | 20 + .../gui/GUIScreenTemplateFolder.java | 6 +- .../recipes/LiquefactionRecipes.java | 7 + .../hbm/inventory/recipes/MachineRecipes.java | 27 +- .../inventory/recipes/RefineryRecipes.java | 4 + .../recipes/SolidificationRecipes.java | 1 + src/main/java/com/hbm/items/ModItems.java | 4 + .../items/machine/ItemChemistryTemplate.java | 460 ++++++++---------- .../oil/TileEntityMachineRefinery.java | 74 ++- .../machine/oil/TileEntityOilDrillBase.java | 12 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../textures/gui/processing/gui_refinery.png | Bin 3005 -> 3327 bytes .../assets/hbm/textures/items/bio_wafer.png | Bin 0 -> 301 bytes 15 files changed, 348 insertions(+), 275 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/bio_wafer.png diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 595363120..afee6285e 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -79,6 +79,7 @@ public class Fluids { public static FluidType DEATH; //osmiridium solution public static FluidType ETHANOL; public static FluidType HEAVYWATER; + public static FluidType SALIENT; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -168,6 +169,7 @@ public class Fluids { DIESEL_CRACK = new FluidTypeCombustible( "DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 450_000); AROMATICS = new FluidTypeFlammable( "AROMATICS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE); UNSATURATEDS = new FluidTypeFlammable( "UNSATURATEDS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE); + SALIENT = new FluidType( "SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE); // ^ ^ ^ ^ ^ ^ ^ ^ @@ -205,7 +207,6 @@ public class Fluids { metaOrder.add(COALOIL); metaOrder.add(HOTOIL); metaOrder.add(HOTCRACKOIL); - //metaOrder.add(HOTCOALOIL); metaOrder.add(HEAVYOIL); metaOrder.add(NAPHTHA); metaOrder.add(NAPHTHA_CRACK); @@ -233,6 +234,7 @@ public class Fluids { metaOrder.add(NITAN); metaOrder.add(BALEFIRE); //processing fluids + metaOrder.add(SALIENT); metaOrder.add(ACID); metaOrder.add(UF6); metaOrder.add(PUF6); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index 154123c9a..e88f586eb 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -4,12 +4,17 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerMachineRefinery; +import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.oil.TileEntityMachineRefinery; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUIMachineRefinery extends GuiInfoContainer { @@ -36,6 +41,18 @@ public class GUIMachineRefinery extends GuiInfoContainer { refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 70 - 52, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 70 - 52, 16, 52, refinery.power, refinery.maxPower); } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 64 <= x && guiLeft + 76 > x && guiTop + 20 < y && guiTop + 46 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", true); //we only need to send one bit, so boolean it is + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, refinery.xCoord, refinery.yCoord, refinery.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { @@ -50,6 +67,9 @@ public class GUIMachineRefinery extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(refinery.tanks[0].getTankType() == Fluids.HOTCRACKOIL) + drawTexturedModalRect(guiLeft + 64, guiTop + 20, 192, 0, 12, 26); int j = (int)refinery.getPowerScaled(52); drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 176, 52 - j, 16, j); diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 570d46e5a..1de103212 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -14,6 +14,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemCassette; import com.hbm.items.machine.ItemChemistryTemplate; import com.hbm.items.machine.ItemStamp; +import com.hbm.items.machine.ItemChemistryTemplate.EnumChemistryTemplate; import com.hbm.items.machine.ItemStamp.StampType; import com.hbm.lib.RefStrings; import com.hbm.packet.ItemFolderPacket; @@ -80,7 +81,10 @@ public class GUIScreenTemplateFolder extends GuiScreen { } // Chemistry Templates for(int i = 0; i < ItemChemistryTemplate.EnumChemistryTemplate.values().length; i++) { - allStacks.add(new ItemStack(ModItems.chemistry_template, 1, i)); + EnumChemistryTemplate chem = EnumChemistryTemplate.getEnum(i); + if(!chem.isDisabled()) { + allStacks.add(new ItemStack(ModItems.chemistry_template, 1, i)); + } } } else { diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index 760a038bb..3a06bf329 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -14,6 +14,7 @@ import com.hbm.items.machine.ItemFluidIcon; import net.minecraft.init.Blocks; import net.minecraft.init.Items; +import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; public class LiquefactionRecipes { @@ -62,6 +63,12 @@ public class LiquefactionRecipes { return recipes.get(key); } + if(stack.getItem() instanceof ItemFood) { + ItemFood food = (ItemFood) stack.getItem(); + float saturation = food.func_150905_g(stack) * food.func_150906_h(stack) * 20; //food val * saturation mod * 2 (constant) * 10 (quanta) + return new FluidStack(Fluids.SALIENT, (int) saturation); + } + return null; } diff --git a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java index ea686b182..6504ecde1 100644 --- a/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MachineRecipes.java @@ -1190,8 +1190,12 @@ public class MachineRecipes { return null; List list = new ArrayList(); + ItemChemistryTemplate.EnumChemistryTemplate chem = ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage()); - switch(ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage())) { + if(chem.isDisabled()) + return list; + + switch(chem) { case CC_OIL: list.add(new ItemStack(ModItems.powder_coal, 8)); list.add(new ItemStack(ModItems.oil_tar, 4)); @@ -1381,7 +1385,12 @@ public class MachineRecipes { FluidStack[] input = new FluidStack[2]; - switch(ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage())) { + ItemChemistryTemplate.EnumChemistryTemplate chem = ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage()); + + if(chem.isDisabled()) + return input; + + switch(chem) { case FP_HEAVYOIL: input[0] = new FluidStack(1000, Fluids.HEAVYOIL); break; @@ -1639,7 +1648,12 @@ public class MachineRecipes { ItemStack[] output = new ItemStack[4]; - switch(ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage())) { + ItemChemistryTemplate.EnumChemistryTemplate chem = ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage()); + + if(chem.isDisabled()) + return output; + + switch(chem) { case ASPHALT: output[0] = new ItemStack(ModBlocks.asphalt, 4); output[1] = new ItemStack(ModBlocks.asphalt, 4); @@ -1808,7 +1822,12 @@ public class MachineRecipes { FluidStack[] output = new FluidStack[2]; - switch(ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage())) { + ItemChemistryTemplate.EnumChemistryTemplate chem = ItemChemistryTemplate.EnumChemistryTemplate.getEnum(stack.getItemDamage()); + + if(chem.isDisabled()) + return output; + + switch(chem) { case FP_HEAVYOIL: output[0] = new FluidStack(RefineryRecipes.heavy_frac_bitu * 10, Fluids.BITUMEN); output[1] = new FluidStack(RefineryRecipes.heavy_frac_smear * 10, Fluids.SMEAR); diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index cdbd0bc2e..814d963be 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -119,6 +119,10 @@ public class RefineryRecipes { cracking.put(Fluids.KEROSENE, new Pair(new FluidStack(Fluids.PETROLEUM, kero_crack_petro), new FluidStack(Fluids.NONE, 0))); } + public static Quintet getRefinery(FluidType oil) { + return refinery.get(oil); + } + public static Pair getFractions(FluidType oil) { return fractions.get(oil); } diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 3fcd1600f..4dd26b381 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -53,6 +53,7 @@ public class SolidificationRecipes { registerRecipe(LAVA, 1000, Blocks.obsidian); registerRecipe(MERCURY, 125, ModItems.ingot_mercury); registerRecipe(BIOGAS, 250, ModItems.biomass_compressed); + registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size) registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(CRACKOIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1c1cc6fb2..ec35203ba 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -492,6 +492,7 @@ public class ModItems { public static Item biomass; public static Item biomass_compressed; + public static Item bio_wafer; public static Item coil_copper; public static Item coil_copper_torus; @@ -2938,6 +2939,7 @@ public class ModItems { biomass = new Item().setUnlocalizedName("biomass").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":biomass"); biomass_compressed = new Item().setUnlocalizedName("biomass_compressed").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":biomass_compressed"); + bio_wafer = new ItemLemon(4, 2F, false).setUnlocalizedName("bio_wafer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bio_wafer"); coil_copper = new Item().setUnlocalizedName("coil_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_copper"); coil_copper_torus = new Item().setUnlocalizedName("coil_copper_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_copper_torus"); @@ -5884,6 +5886,8 @@ public class ModItems { //Things that look like rotten flesh but aren't GameRegistry.registerItem(biomass, biomass.getUnlocalizedName()); GameRegistry.registerItem(biomass_compressed, biomass_compressed.getUnlocalizedName()); + //delicious! + GameRegistry.registerItem(bio_wafer, bio_wafer.getUnlocalizedName()); //Nuggets GameRegistry.registerItem(nugget_uranium, nugget_uranium.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index 2482d9a59..acf16f00b 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -36,31 +36,31 @@ public class ItemChemistryTemplate extends Item { FP_LIGHTOIL, FR_REOIL, FR_PETROIL, - FC_BITUMEN, - FC_I_NAPHTHA, - FC_GAS_PETROLEUM, - FC_DIESEL_KEROSENE, - FC_KEROSENE_PETROLEUM, - CC_OIL, - CC_I, - CC_HEATING, - CC_HEAVY, - CC_NAPHTHA, - SF_OIL, - SF_HEAVYOIL, - SF_SMEAR, - SF_HEATINGOIL, - SF_RECLAIMED, - SF_PETROIL, - SF_LUBRICANT, - SF_NAPHTHA, - SF_DIESEL, - SF_LIGHTOIL, - SF_KEROSENE, - SF_GAS, - SF_PETROLEUM, - SF_BIOGAS, - SF_BIOFUEL, + FC_BITUMEN(true), + FC_I_NAPHTHA(true), + FC_GAS_PETROLEUM(true), + FC_DIESEL_KEROSENE(true), + FC_KEROSENE_PETROLEUM(true), + CC_OIL(true), + CC_I(true), + CC_HEATING(true), + CC_HEAVY(true), + CC_NAPHTHA(true), + SF_OIL(true), + SF_HEAVYOIL(true), + SF_SMEAR(true), + SF_HEATINGOIL(true), + SF_RECLAIMED(true), + SF_PETROIL(true), + SF_LUBRICANT(true), + SF_NAPHTHA(true), + SF_DIESEL(true), + SF_LIGHTOIL(true), + SF_KEROSENE(true), + SF_GAS(true), + SF_PETROLEUM(true), + SF_BIOGAS(true), + SF_BIOFUEL(true), BP_BIOGAS, BP_BIOFUEL, LPG, @@ -111,6 +111,15 @@ public class ItemChemistryTemplate extends Item { HEAVY_ELECTROLYSIS, DUCRETE; + private boolean disabled = false; + + private EnumChemistryTemplate() { } + + /** Alternate ctor for disabling recipes to prevent recipe shifting armageddon */ + private EnumChemistryTemplate(boolean disabled) { + this.disabled = disabled; + } + public static EnumChemistryTemplate getEnum(int i) { if(i < EnumChemistryTemplate.values().length) return EnumChemistryTemplate.values()[i]; @@ -121,252 +130,183 @@ public class ItemChemistryTemplate extends Item { public String getName() { return this.toString(); } + + public boolean isDisabled() { + return this.disabled; + } } - public ItemChemistryTemplate() - { - this.setHasSubtypes(true); - this.setMaxDamage(0); - } + public ItemChemistryTemplate() { + this.setHasSubtypes(true); + this.setMaxDamage(0); + } - public String getItemStackDisplayName(ItemStack stack) - { - String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - String s1 = ("" + StatCollector.translateToLocal("chem." + EnumChemistryTemplate.getEnum(stack.getItemDamage()).name())).trim(); + public String getItemStackDisplayName(ItemStack stack) { + EnumChemistryTemplate enum1 = EnumChemistryTemplate.getEnum(stack.getItemDamage()); + + if(enum1.isDisabled()) { + return EnumChatFormatting.RED + "Broken Template" + EnumChatFormatting.RESET; + } else { + String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); + String s1 = ("" + StatCollector.translateToLocal("chem." + enum1.name())).trim(); + + if(s1 != null) { + s = s + " " + s1; + } + + return s; + } + } - if (s1 != null) - { - s = s + " " + s1; - } - - return s; - } - - @Override + @Override @SideOnly(Side.CLIENT) - public void getSubItems(Item item, CreativeTabs tabs, List list) - { - for (int i = 0; i < EnumChemistryTemplate.values().length; ++i) - { - list.add(new ItemStack(item, 1, i)); - } - } - - public static int getProcessTime(ItemStack stack) { - - if(!(stack.getItem() instanceof ItemChemistryTemplate)) - return 100; - - int i = stack.getItemDamage(); - EnumChemistryTemplate enum1 = EnumChemistryTemplate.getEnum(i); - - switch (enum1) { - case FP_HEAVYOIL: - return 50; - case FP_SMEAR: - return 50; - case FP_NAPHTHA: - return 50; - case FP_LIGHTOIL: - return 50; - case FR_REOIL: - return 30; - case FR_PETROIL: - return 30; - case OIL_SAND: - return 200; - case FC_BITUMEN: - return 100; - case FC_I_NAPHTHA: - return 150; - case FC_GAS_PETROLEUM: - return 100; - case FC_DIESEL_KEROSENE: - return 150; - case FC_KEROSENE_PETROLEUM: - return 150; - case CC_OIL: - return 150; - case CC_I: - return 200; - case CC_HEATING: - return 250; - case CC_HEAVY: - return 200; - case CC_NAPHTHA: - return 300; - case ASPHALT: - return 100; - case COOLANT: - return 50; - case CRYOGEL: - return 50; - case DESH: - return 300; - case NITAN: - return 50; - case PEROXIDE: - return 50; - case CIRCUIT_4: - return 200; - case CIRCUIT_5: - return 250; - case SF_OIL: - return 20; - case SF_HEAVYOIL: - return 20; - case SF_SMEAR: - return 20; - case SF_HEATINGOIL: - return 20; - case SF_RECLAIMED: - return 20; - case SF_PETROIL: - return 20; - case SF_LUBRICANT: - return 20; - case SF_NAPHTHA: - return 20; - case SF_DIESEL: - return 20; - case SF_LIGHTOIL: - return 20; - case SF_KEROSENE: - return 20; - case SF_GAS: - return 20; - case SF_PETROLEUM: - return 20; - case SF_BIOGAS: - return 20; - case SF_BIOFUEL: - return 20; - case POLYMER: - return 100; - case DEUTERIUM: - return 200; - case STEAM: - return 20; - case BP_BIOGAS: - return 200; - case BP_BIOFUEL: - return 100; - case LPG: - return 100; - case YELLOWCAKE: - return 250; - case UF6: - return 100; - case PUF6: - return 150; - case SAS3: - return 200; - case DYN_SCHRAB: - return 1*60*20; - case DYN_EUPH: - return 3*60*20; - case DYN_DNT: - return 5*60*20; - case CORDITE: - return 40; - case KEVLAR: - return 40; - case CONCRETE: - return 100; - case CONCRETE_ASBESTOS: - return 100; - case SOLID_FUEL: - return 200; - case ELECTROLYSIS: - return 150; - case XENON: - return 300; - case XENON_OXY: - return 20; - case SATURN: - return 60; - case BALEFIRE: - return 100; - case SCHRABIDIC: - return 100; - case SCHRABIDATE: - return 150; - case COLTAN_CLEANING: - return 60; - case COLTAN_PAIN: - return 120; - case COLTAN_CRYSTAL: - return 80; - case VIT_LIQUID: - return 100; - case VIT_GAS: - return 100; - case TEL: - return 40; - case GASOLINE: - return 40; - case FRACKSOL: - return 20; - case HELIUM3: - return 200; - case OSMIRIDIUM_DEATH: - return 240; - case ETHANOL: - return 50; - case METH: - return 30; - case CO2: - return 60; - case HEAVY_ELECTROLYSIS: - return 150; - case DUCRETE: - return 150; - default: - return 100; - } - } + public void getSubItems(Item item, CreativeTabs tabs, List list) { + for(int i = 0; i < EnumChemistryTemplate.values().length; ++i) { + EnumChemistryTemplate enum1 = EnumChemistryTemplate.getEnum(i); + + if(!enum1.isDisabled()) { + list.add(new ItemStack(item, 1, i)); + } + } + } + + public static int getProcessTime(ItemStack stack) { + + if(!(stack.getItem() instanceof ItemChemistryTemplate)) + return 100; + + int i = stack.getItemDamage(); + EnumChemistryTemplate enum1 = EnumChemistryTemplate.getEnum(i); + + switch(enum1) { + case FP_HEAVYOIL: return 50; + case FP_SMEAR: return 50; + case FP_NAPHTHA: return 50; + case FP_LIGHTOIL: return 50; + case FR_REOIL: return 30; + case FR_PETROIL: return 30; + case OIL_SAND: return 200; + case FC_BITUMEN: return 100; + case FC_I_NAPHTHA: return 150; + case FC_GAS_PETROLEUM: return 100; + case FC_DIESEL_KEROSENE: return 150; + case FC_KEROSENE_PETROLEUM: return 150; + case CC_OIL: return 150; + case CC_I: return 200; + case CC_HEATING: return 250; + case CC_HEAVY: return 200; + case CC_NAPHTHA: return 300; + case ASPHALT: return 100; + case COOLANT: return 50; + case CRYOGEL: return 50; + case DESH: return 300; + case NITAN: return 50; + case PEROXIDE: return 50; + case CIRCUIT_4: return 200; + case CIRCUIT_5: return 250; + case SF_OIL: return 20; + case SF_HEAVYOIL: return 20; + case SF_SMEAR: return 20; + case SF_HEATINGOIL: return 20; + case SF_RECLAIMED: return 20; + case SF_PETROIL: return 20; + case SF_LUBRICANT: return 20; + case SF_NAPHTHA: return 20; + case SF_DIESEL: return 20; + case SF_LIGHTOIL: return 20; + case SF_KEROSENE: return 20; + case SF_GAS: return 20; + case SF_PETROLEUM: return 20; + case SF_BIOGAS: return 20; + case SF_BIOFUEL: return 20; + case POLYMER: return 100; + case DEUTERIUM: return 200; + case STEAM: return 20; + case BP_BIOGAS: return 200; + case BP_BIOFUEL: return 100; + case LPG: return 100; + case YELLOWCAKE: return 250; + case UF6: return 100; + case PUF6: return 150; + case SAS3: return 200; + case DYN_SCHRAB: return 1 * 60 * 20; + case DYN_EUPH: return 3 * 60 * 20; + case DYN_DNT: return 5 * 60 * 20; + case CORDITE: return 40; + case KEVLAR: return 40; + case CONCRETE: return 100; + case CONCRETE_ASBESTOS: return 100; + case SOLID_FUEL: return 200; + case ELECTROLYSIS: return 150; + case XENON: return 300; + case XENON_OXY: return 20; + case SATURN: return 60; + case BALEFIRE: return 100; + case SCHRABIDIC: return 100; + case SCHRABIDATE: return 150; + case COLTAN_CLEANING: return 60; + case COLTAN_PAIN: return 120; + case COLTAN_CRYSTAL: return 80; + case VIT_LIQUID: return 100; + case VIT_GAS: return 100; + case TEL: return 40; + case GASOLINE: return 40; + case FRACKSOL: return 20; + case HELIUM3: return 200; + case OSMIRIDIUM_DEATH: return 240; + case ETHANOL: return 50; + case METH: return 30; + case CO2: return 60; + case HEAVY_ELECTROLYSIS: return 150; + case DUCRETE: return 150; + default: return 100; + } + } @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) - { - - if(!(stack.getItem() instanceof ItemChemistryTemplate)) - return; + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + if(!(stack.getItem() instanceof ItemChemistryTemplate)) + return; + + if(EnumChemistryTemplate.getEnum(stack.getItemDamage()).isDisabled()) { + return; + } + + List stacks = MachineRecipes.getChemInputFromTempate(stack); + FluidStack[] inF = MachineRecipes.getFluidInputFromTempate(stack); + ItemStack[] out = MachineRecipes.getChemOutputFromTempate(stack); + FluidStack[] outF = MachineRecipes.getFluidOutputFromTempate(stack); - List stacks = MachineRecipes.getChemInputFromTempate(stack); - FluidStack[] inF = MachineRecipes.getFluidInputFromTempate(stack); - ItemStack[] out = MachineRecipes.getChemOutputFromTempate(stack); - FluidStack[] outF = MachineRecipes.getFluidOutputFromTempate(stack); - list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", I18nUtil.resolveKey(ModItems.template_folder.getUnlocalizedName() + ".name"))); list.add(""); - try { - list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_out_p")); - for(int i = 0; i < 4; i++) - if(out[i] != null) - list.add(out[i].stackSize + "x " + out[i].getDisplayName()); - - for(int i = 0; i < 2; i++) - if(outF[i] != null) - list.add(outF[i].fill + "mB " + I18n.format(outF[i].type.getUnlocalizedName())); - - list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_in_p")); - - if(stacks != null) - for(int i = 0; i < stacks.size(); i++) - list.add(stacks.get(i).stackSize + "x " + stacks.get(i).getDisplayName()); - - for(int i = 0; i < 2; i++) - if(inF[i] != null) - list.add(inF[i].fill + "mB " + I18n.format(inF[i].type.getUnlocalizedName())); - - list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_time")); - list.add(Math.floor((float)(getProcessTime(stack)) / 20 * 100) / 100 + " " + I18nUtil.resolveKey("info.template_seconds")); - } catch(Exception e) { - list.add("###INVALID###"); - list.add("0x334077-0x6A298F-0xDF3795-0x334077"); - } + try { + list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_out_p")); + for(int i = 0; i < 4; i++) + if(out[i] != null) + list.add(out[i].stackSize + "x " + out[i].getDisplayName()); + + for(int i = 0; i < 2; i++) + if(outF[i] != null) + list.add(outF[i].fill + "mB " + I18n.format(outF[i].type.getUnlocalizedName())); + + list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_in_p")); + + if(stacks != null) + for(int i = 0; i < stacks.size(); i++) + list.add(stacks.get(i).stackSize + "x " + stacks.get(i).getDisplayName()); + + for(int i = 0; i < 2; i++) + if(inF[i] != null) + list.add(inF[i].fill + "mB " + I18n.format(inF[i].type.getUnlocalizedName())); + + list.add(EnumChatFormatting.BOLD + I18nUtil.resolveKey("info.template_time")); + list.add(Math.floor((float) (getProcessTime(stack)) / 20 * 100) / 100 + " " + I18nUtil.resolveKey("info.template_seconds")); + } catch(Exception e) { + list.add("###INVALID###"); + list.add("0x334077-0x6A298F-0xDF3795-0x334077"); + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index 060521c31..865a1d561 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -3,10 +3,12 @@ package com.hbm.tileentity.machine.oil; import java.util.ArrayList; import java.util.List; +import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidContainerRegistry; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -15,6 +17,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Quintet; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -28,8 +31,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; -public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidSource { +public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidSource, IControlReceiver { public long power = 0; public int sulfur = 0; @@ -174,6 +178,56 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements this.power = nbt.getLong("power"); } + private void refine() { + Quintet refinery = RefineryRecipes.getRefinery(tanks[0].getTankType()); + + if(refinery == null) //usually not possible + return; + + FluidStack[] stacks = new FluidStack[] {refinery.getV(), refinery.getW(), refinery.getX(), refinery.getY()}; + + for(int i = 0; i < stacks.length; i++) + tanks[i + 1].setTankType(stacks[i].type); + + if(power < 5 || tanks[0].getFill() < 100) + return; + + for(int i = 0; i < stacks.length; i++) { + if(tanks[i + 1].getFill() + stacks[i].fill > tanks[i + 1].getMaxFill()) { + return; + } + } + + tanks[0].setFill(tanks[0].getFill() - 100); + + for(int i = 0; i < stacks.length; i++) + tanks[i + 1].setFill(tanks[i + 1].getFill() + stacks[i].fill); + + this.sulfur++; + + if(this.sulfur >= maxSulfur) { + this.sulfur -= maxSulfur; + + ItemStack out = refinery.getZ(); + + if(out != null) { + + if(slots[11] == null) { + slots[11] = out.copy(); + } else { + + if(out.getItem() == slots[11].getItem() && out.getItemDamage() == slots[11].getItemDamage() && slots[11].stackSize + out.stackSize <= slots[11].getMaxStackSize()) { + slots[11].stackSize += out.stackSize; + } + } + } + + this.markDirty(); + } + + this.power -= 5; + } + private void updateConnections() { this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord + 1, Library.POS_X); this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord - 1, Library.POS_X); @@ -310,4 +364,22 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 25; + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("toggle")) { + + if(tanks[0].getTankType() == Fluids.HOTOIL) { + tanks[0].setTankType(Fluids.HOTCRACKOIL); + } else { + tanks[0].setTankType(Fluids.HOTOIL); + } + } + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 50433c716..d1f2857f8 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -286,19 +286,15 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple @Override public List getFluidList(FluidType type) { - if(type.name().equals(tanks[0].getTankType().name())) - return this.list1; - if(type.name().equals(tanks[1].getTankType().name())) - return this.list2; + if(type == tanks[0].getTankType()) return this.list1; + if(type == tanks[1].getTankType()) return this.list2; return new ArrayList(); } @Override public void clearFluidList(FluidType type) { - if(type.name().equals(tanks[0].getTankType().name())) - list1.clear(); - if(type.name().equals(tanks[1].getTankType().name())) - list2.clear(); + if(type == tanks[0].getTankType()) list1.clear(); + if(type == tanks[1].getTankType()) list2.clear(); } @Override diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 40134fb9f..54194c347 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -503,6 +503,7 @@ hbmfluid.plasma_ht=Wasserstoff-Tritium-Plasma hbmfluid.plasma_xm=Xenon-Quecksilber-Plasma hbmfluid.puf6=Plutoniumhexafluorid hbmfluid.reclaimed=Wiederaufbetreitetes Industrieöl +hbmfluid.salient=Saftiges Grün hbmfluid.sas3=Schrabidiumtrisulfat hbmfluid.schrabidic=Schrabidische Säure hbmfluid.smear=Industrieöl @@ -854,6 +855,7 @@ item.billet_zfb_am_mix.name=Reaktorfähiges ZFB-Billet item.billet_zfb_bismuth.name=Bismut ZFB-Billet item.billet_zfb_pu241.name=Pu-241 ZFB-Billet item.billet_zirconium.name=Zirkoniumbillet +item.bio_wafer.name=Algenwaffel item.biomass.name=Biomasse item.biomass_compressed.name=Verdichtete Biomasse item.bismuth_pickaxe.name=Bismutspitzhacke diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 508ec94b3..e2ca24333 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -657,6 +657,7 @@ hbmfluid.plasma_ht=Hydrogen-Tritium Plasma hbmfluid.plasma_xm=Xenon-Mercury Plasma hbmfluid.puf6=Plutonium Hexafluoride hbmfluid.reclaimed=Reclaimed Industrial Oil +hbmfluid.salient=Salient Green hbmfluid.sas3=Schrabidium Trisulfide hbmfluid.schrabidic=Schrabidic Acid hbmfluid.smear=Industrial Oil @@ -1020,6 +1021,7 @@ item.billet_zfb_am_mix.name=Reactor Grade Americium ZFB Billet item.billet_zfb_bismuth.name=Bismuth ZFB Billet item.billet_zfb_pu241.name=Pu-241 ZFB Billet item.billet_zirconium.name=Zirconium Billet +item.bio_wafer.name=Algae Wafer item.biomass.name=Biomass item.biomass_compressed.name=Compressed Biomass item.bismuth_pickaxe.name=Bismuth Pickaxe diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png index 3ada7e8b8ec73cbdcf9e741d4ae02f20beca9712..752d061e5224989187977056f726b718f14c68f9 100644 GIT binary patch literal 3327 zcmbVPXH-+!8a*j0paBs?q(~48*ak)j9U>^rp(q_GN^}H7DKVh51W;iFLPQ;!6s3cJ z3_J{h2rKu66JE&Uf$m?*8`P_pEh)Gc(ag@QLvO z01$=-XDMP9}OaWwgI*}%6{fxQVJ5YXqiJSzPeZ|0+sPisY55#j+ zv`Y(aV7*uD>^B%nj38TSJmf#kdO+hfWZVNN9dO=_%-mtMLwUx3oM%JKTO0O9sfs zpM2}qRdRFxeA&a|#gp#JL(zi=jUmK^$-}513=vLo`=X^WW^Va3+p;@1w@M`Nfq|OV z9@aax)==j`1bdV$wYuD-y{7d6Yk*bM(jC=gEqqWk#ssYlN1wq(DvX#%?^Ft!EPrvM zdO)w5HN&8F1-1(OWN~adgs6xK5?H7c=bIm6X+lWdpqq;D^ z+fjSl<kL`08C^3X3c$#5V#?ed+%9i5HlN@r^M4U@Gv`*;K_<1 z6}k_iq#T6d;|EM7f<<~u`9_61V$+|TU$>R+G`my;*-aN}pQBk*#W!GL=j}%`bNpbg z*jui+XI_%%-Aa%lx^70lkcl1bcs}v89ys$*(@*OLklPosRSi{}K}k5I?pKYVhnh}( zT4r?SQRseluDB|NZ9EspThI=H*p4sWs!jd}jS{iv^M=QVgeja^r~J;ylo9^aQ(HJ~ zVBBZhu?{d5O-)>ZZ4YjGfIuJVr;pu{0U^Tv^UjNBeK_nkK!iB>600-?>bW!}T0gj}b7ggh-x2>u zre*^N0t?Gm{EYHXmvcn=!VW(l`8Bm>RKRsr7Z*q_>{NTaRi1`JTrRiIyerfsutju( zEdg17pt@XNBJi&Sjw=R&aH;^-n764+r-Y`f4D?4rhXWzAFNdS#&?ILV+Ai8-%R&vp z$nb6Tne8zv@hx+GMQYvhsxMjNi< zr^}*%4Xm-4pMDGl(!ZbGwAUtrV^IYms-Q!1!v21$SpuXozcSI*++?l!8oY zUW0<>qlrp{F1Kr?eK%1uQC)7YId5`v+dZ_c+$0-G^*j_4<*^D>R#q04EOFh^@?5-W ztlf?|At^BNdOPM9A8BB4L=99#F%QBCD(?y)_6`p56F!xk{$w9_0d-ST(_&j8aA=P> zm{5NDl?Zp4M@ziO0wD7o01pKL!P&V7cz4zqWKIlL`>#YhoJy8^&HwodeD|Yjy#YsA zOfRjhFW+2dBPk6I_PL`nT@#{fCjH-9aQoZ|kq^Fw+23biln+z2fyFicTKt7!@DD_d&Z(q)t9}3e{rYfXV&Wj4b(;FZVr6s^B@v4$b1XFOP<+9Ptc6}V za5iO|imIxY8$0GU?P=`AtbEr5*)({w$GjLNZm{0kSC|xPgV420dj7$Dl_?W-L5487 zTcNwktFfiU*e7^*Ue*&UYJ&6a;F2nR5ICnR4pqQQ^XKz2$QdRG{+3$m{1f_E$qmL- z#2P1RUN0I%mJh(vTG|K1?_tqlnKxpY2ASTJ~-a2<|$Tm!nqLU zxqtG!IO2`H&9HZWde{Cro6lF|!Nr;#0mLa~{8y#urTyO7p+83r3dy5<;KvGEEjate zc}1hMS-^Sx*T-t_4)l{NIqVe9a?T=inIU<{Q3L-6=R+B@x@IBnJ9%Mgd@d`~RSdh% z?p?pZT%BIaraK7tMBMP&h`=Nh=f^gx@wt(Oylf=}0j?Yc64uWu(+EWsTW6d*&po1uyi_}+?f2pD=BQmd z`tZLl&QUxr>?I*dP~=-|_^~a45{FbNIU;|AhpX2;cx_@&;dcaiO=0$sA0qX5cY%sr zuO4S;eIWH)@Xh(3lC^mg4lwlaTnvlzseMCInoAE~6PmB>1r49e6QgdfD(DRLO*!iG z273gtgDiMbPjEjJhjK+W$~YpV(G&$i;###2HGD&3>h^J7+C<=AuE)w$%Arqv(8M>& zrVh-7MM6JlYNr94-bmoxkvtU^3I8y+MtX$yuaR1*Lw=4B1gWABdBMstsft+->or~L z^@&{V;~WOSr;oz?G5P z?H{aYr9u4GXTy03HkG~Ux4$ZJu3b%{Y2p1?HwI`9ERE&mh)Yhaph>&Y)o-zb%&^t) zUO^tudLnwpQv{er0w62{Ks^sYD?tBl>OSo=)aAB!6~2dAmaKNS%l1@kEzXnCz6NxZ z2W$#^R(xll^Wz#iKcW`C$#44yg?~U%RJ#UpbAM(nsId*RbtM~1d*`NI!Tj6bYe?`D5m+#mkfm|e3-(XjeLNl4?KbY26rEWZ*U7__5Rw{{-vSK5{I)@GTMjV}$rSVt&B?BZ~~daJ5gY%W9$OP{^Jl88eMvApc?7-BXa{5S%0P z+{D-V^1HVM6z=Q8>c9Qpyear>%OtYZ;`l3}GV0@e5(4J`RupYDJ}u?duh4KpB%*$D zc{w3;rz}PvL=+bn+dAIv$RP69nZps6z?d*+Tlz()MDXn) literal 3005 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 Y^-Z1I%(BDHxq?XhZ=7r>$FV>D3)b;SHUIzs diff --git a/src/main/resources/assets/hbm/textures/items/bio_wafer.png b/src/main/resources/assets/hbm/textures/items/bio_wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..b251969612a0330971d7ebd4d48a59293f709298 GIT binary patch literal 301 zcmV+|0n+}7P)D%45Qe{vw9vAGLP{*NQG-HDeS@$*#nd;+Yb@nPCY1sV zJ7(5kE3#Bnl#$ib+NES@(tdQhyYIi#9sKLpdYUWj_S>nhYn*ckA$WT|{MdV!yn=1p zqP0c{K?tG5w?@ymaMyJ>=PL!U?>$=U0vcmTDKQKK*4h%! z8YrbmDWSD46Rov`5b)lkl)|~ggBz@wHk%h>jAaukB~?{%JifDBE;yYo(0_6Fmt8Xf ztX2!8l#JuZI9@oPKkNN>X7-I&qoV#n@88x37u#kveUT7n00000NkvXXu0mjf!)1Va literal 0 HcmV?d00001