diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 565d1e8a2..7b9a3a4e1 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -644,6 +644,7 @@ public class ModBlocks { public static final int guiID_bomb_multi = 10; public static Block heater_firebox; + public static Block heater_oven; public static Block heater_oilburner; public static Block heater_electric; @@ -1830,6 +1831,7 @@ public class ModBlocks { c4 = new BlockC4().setBlockName("c4").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":c4"); heater_firebox = new HeaterFirebox().setBlockName("heater_firebox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + heater_oven = new HeaterOven().setBlockName("heater_oven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); heater_oilburner = new HeaterOilburner().setBlockName("heater_oilburner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); heater_electric = new HeaterElectric().setBlockName("heater_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3016,6 +3018,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); register(heater_firebox); + register(heater_oven); register(heater_oilburner); register(heater_electric); register(furnace_iron); diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index a2b70c655..dc1e5a7da 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -31,7 +32,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockFluidBarrel extends BlockContainer implements IPersistentInfoProvider { +public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider, IPersistentInfoProvider { int capacity; @@ -169,4 +170,52 @@ public class BlockFluidBarrel extends BlockContainer implements IPersistentInfoP tank.readFromNBT(persistentTag, "tank"); list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())); } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(this == ModBlocks.barrel_plastic) { + list.add(EnumChatFormatting.AQUA + "Capacity: 12,000mB"); + list.add(EnumChatFormatting.YELLOW + "Cannot store hot fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + } + + if(this == ModBlocks.barrel_corroded) { + list.add(EnumChatFormatting.AQUA + "Capacity: 6,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + list.add(EnumChatFormatting.RED + "Leaky"); + } + + if(this == ModBlocks.barrel_iron) { + list.add(EnumChatFormatting.AQUA + "Capacity: 8,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids properly"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + } + + if(this == ModBlocks.barrel_steel) { + list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store highly corrosive fluids properly"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + } + + if(this == ModBlocks.barrel_antimatter) { + list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); + list.add(EnumChatFormatting.GREEN + "Can store antimatter"); + } + + if(this == ModBlocks.barrel_tcalloy) { + list.add(EnumChatFormatting.AQUA + "Capacity: 24,000mB"); + list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); + list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); + list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); + } + } } diff --git a/src/main/java/com/hbm/blocks/machine/HeaterOven.java b/src/main/java/com/hbm/blocks/machine/HeaterOven.java new file mode 100644 index 000000000..1aa60151b --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/HeaterOven.java @@ -0,0 +1,48 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityHeaterOven; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class HeaterOven extends BlockDummyable implements ITooltipProvider { + + public HeaterOven() { + super(Material.rock); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityHeaterOven(); + return new TileEntityProxyCombo(true, false, false); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java index ab15345f9..599049cca 100644 --- a/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java @@ -154,9 +154,7 @@ public class CentrifugeRecipeHandler extends TemplateRecipeHandler { @Override public void drawExtras(int recipe) { drawProgressBar(21, 24, 195, 55, 16, 16, 48, 7); - drawProgressBar(56, 5, 176, 0, 54, 54, 48 * 3, 0); - drawProgressBar(3, 6, 177, 55, 16, 52, 480, 7); } diff --git a/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java index 8fdda9e8a..add9dcf95 100644 --- a/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/GasCentrifugeRecipeHandler.java @@ -9,7 +9,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import com.hbm.handler.nei.AnvilRecipeHandler.RecipeSet; import com.hbm.inventory.gui.GUIMachineGasCent; import com.hbm.inventory.recipes.GasCentrifugeRecipes; import com.hbm.inventory.recipes.MachineRecipes; @@ -18,8 +17,6 @@ import com.hbm.lib.RefStrings; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; -import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect; -import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRectHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; diff --git a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java index 181422854..5bca723ae 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java @@ -1,6 +1,7 @@ package com.hbm.inventory.container; import com.hbm.inventory.SlotMachineOutput; +import com.hbm.inventory.SlotUpgrade; import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; import net.minecraft.entity.player.EntityPlayer; @@ -10,69 +11,60 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; public class ContainerCentrifuge extends Container { - + private TileEntityMachineCentrifuge diFurnace; - + public ContainerCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) { - + diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 26, 17)); - this.addSlotToContainer(new Slot(tedf, 1, 26, 53)); - this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 134, 17)); - this.addSlotToContainer(new SlotMachineOutput(tedf, 3, 152, 17)); - this.addSlotToContainer(new SlotMachineOutput(tedf, 4, 134, 53)); - this.addSlotToContainer(new SlotMachineOutput(tedf, 5, 152, 53)); - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + + this.addSlotToContainer(new Slot(tedf, 0, 36, 50)); + this.addSlotToContainer(new Slot(tedf, 1, 9, 50)); + this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 63, 50)); + this.addSlotToContainer(new SlotMachineOutput(tedf, 3, 83, 50)); + this.addSlotToContainer(new SlotMachineOutput(tedf, 4, 103, 50)); + this.addSlotToContainer(new SlotMachineOutput(tedf, 5, 123, 50)); + this.addSlotToContainer(new SlotUpgrade(tedf, 6, 149, 22)); + this.addSlotToContainer(new SlotUpgrade(tedf, 7, 149, 40)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); } } - - for(int i = 0; i < 9; i++) - { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); } } - + @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - - if (var4 != null && var4.getHasStack()) - { + + if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); SlotMachineOutput.checkAchievements(p_82846_1_, var5); - - if (par2 <= 5) { - if (!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) - { + + if(par2 <= 6) { + if(!this.mergeItemStack(var5, 6, this.inventorySlots.size(), true)) { return null; } - } - else if (!this.mergeItemStack(var5, 0, 2, false)) - { + } else if(!this.mergeItemStack(var5, 0, 2, false)) { return null; } - - if (var5.stackSize == 0) - { + + if(var5.stackSize == 0) { var4.putStack((ItemStack) null); - } - else - { + } else { var4.onSlotChanged(); } } - + return var3; - } + } @Override public boolean canInteractWith(EntityPlayer player) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerFirebox.java b/src/main/java/com/hbm/inventory/container/ContainerFirebox.java index 4883cb374..ed8540c04 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerFirebox.java +++ b/src/main/java/com/hbm/inventory/container/ContainerFirebox.java @@ -1,6 +1,6 @@ package com.hbm.inventory.container; -import com.hbm.tileentity.machine.TileEntityHeaterFirebox; +import com.hbm.tileentity.machine.TileEntityFireboxBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -10,9 +10,9 @@ import net.minecraft.item.ItemStack; public class ContainerFirebox extends Container { - protected TileEntityHeaterFirebox firebox; + protected TileEntityFireboxBase firebox; - public ContainerFirebox(InventoryPlayer invPlayer, TileEntityHeaterFirebox furnace) { + public ContainerFirebox(InventoryPlayer invPlayer, TileEntityFireboxBase furnace) { this.firebox = furnace; this.firebox.openInventory(); diff --git a/src/main/java/com/hbm/inventory/gui/GUIFirebox.java b/src/main/java/com/hbm/inventory/gui/GUIFirebox.java index 66ee4be51..6091d74d2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFirebox.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFirebox.java @@ -5,8 +5,8 @@ import java.util.List; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFirebox; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.machine.TileEntityHeaterFirebox; +import com.hbm.tileentity.machine.TileEntityFireboxBase; +import com.hbm.tileentity.machine.TileEntityHeaterOven; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -16,12 +16,13 @@ import net.minecraft.util.ResourceLocation; public class GUIFirebox extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_firebox.png"); - private TileEntityHeaterFirebox firebox; + private TileEntityFireboxBase firebox; + private final ResourceLocation texture; - public GUIFirebox(InventoryPlayer invPlayer, TileEntityHeaterFirebox tedf) { + public GUIFirebox(InventoryPlayer invPlayer, TileEntityFireboxBase tedf, ResourceLocation texture) { super(new ContainerFirebox(invPlayer, tedf)); firebox = tedf; + this.texture = texture; this.xSize = 176; this.ySize = 168; @@ -38,7 +39,7 @@ public class GUIFirebox extends GuiInfoContainer { if(this.isMouseOverSlot(slot, x, y) && !slot.getHasStack()) { - List bonuses = this.firebox.burnModule.getDesc(); + List bonuses = this.firebox.getModule().getDesc(); if(!bonuses.isEmpty()) { this.func_146283_a(bonuses, x, y); @@ -47,7 +48,7 @@ public class GUIFirebox extends GuiInfoContainer { } } - this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 27, 71, 7, x, y, new String[] { String.format("%,d", firebox.heatEnergy) + " / " + String.format("%,d", firebox.maxHeatEnergy) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 27, 71, 7, x, y, new String[] { String.format("%,d", firebox.heatEnergy) + " / " + String.format("%,d", firebox.getMaxHeat()) + "TU" }); this.drawCustomInfoStat(x, y, guiLeft + 80, guiTop + 36, 71, 7, x, y, new String[] { firebox.burnHeat + "TU/t", (firebox.burnTime / 20) + "s" }); } @@ -55,7 +56,9 @@ public class GUIFirebox extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.firebox.hasCustomInventoryName() ? this.firebox.getInventoryName() : I18n.format(this.firebox.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + int color = firebox instanceof TileEntityHeaterOven ? 0xffffff : 4210752; + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, color); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -65,7 +68,7 @@ public class GUIFirebox extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = firebox.heatEnergy * 69 / firebox.maxHeatEnergy; + int i = firebox.heatEnergy * 69 / firebox.getMaxHeat(); drawTexturedModalRect(guiLeft + 81, guiTop + 28, 176, 0, i, 5); int j = firebox.burnTime * 70 / Math.max(firebox.maxBurnTime, 1); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java index 7bbd7da1f..1803b06f6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java @@ -13,7 +13,7 @@ import net.minecraft.util.ResourceLocation; public class GUIMachineCentrifuge extends GuiInfoContainer { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/centrifuge.png"); + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_centrifuge.png"); private TileEntityMachineCentrifuge centrifuge; public GUIMachineCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) { @@ -21,7 +21,7 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { centrifuge = tedf; this.xSize = 176; - this.ySize = 166; + this.ySize = 186; } @Override @@ -33,9 +33,9 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName()); + //String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + //this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -45,20 +45,21 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(centrifuge.hasPower()) - { - int i1 = (int)centrifuge.getPowerRemainingScaled(54); - drawTexturedModalRect(guiLeft + 8, guiTop + 69 - i1, 177, 107 - i1, 16, i1); + if(centrifuge.hasPower()) { + int i1 = (int) centrifuge.getPowerRemainingScaled(35); + drawTexturedModalRect(guiLeft + 9, guiTop + 48 - i1, 176, 35 - i1, 16, i1); } - if(centrifuge.isProcessing()) - { - int j1 = centrifuge.getCentrifugeProgressScaled(55); - drawTexturedModalRect(guiLeft + 61, guiTop + 16, 176, 0, j1, 54); - } - - if(centrifuge.hasPower() && centrifuge.canProcess()) { - drawTexturedModalRect(guiLeft + 25, guiTop + 34, 194, 54, 18, 18); + if(centrifuge.isProcessing()) { + int p = centrifuge.getCentrifugeProgressScaled(145); + + for(int i = 0; i < 4; i++) { + int h = Math.min(p, 36); + drawTexturedModalRect(guiLeft + 65 + i * 20, guiTop + 50 - h, 176, 71 - h, 12, h); + p -= h; + if(p <= 0) + break; + } } } } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index c409e2f84..eaeceea59 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -233,6 +233,13 @@ public class AnvilRecipes { new OreDictStack(CU.ingot(), 8) }, new AnvilOutput(new ItemStack(ModBlocks.heater_firebox))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(ModItems.ingot_firebrick, 16), + new OreDictStack(STEEL.plate(), 4), + new OreDictStack(CU.ingot(), 8) + }, new AnvilOutput(new ItemStack(ModBlocks.heater_oven))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 4), diff --git a/src/main/java/com/hbm/items/block/ItemBlockLore.java b/src/main/java/com/hbm/items/block/ItemBlockLore.java index 1d7fb0c1e..e5b6fa081 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockLore.java +++ b/src/main/java/com/hbm/items/block/ItemBlockLore.java @@ -26,50 +26,6 @@ public class ItemBlockLore extends ItemBlockBase { list.add("Static fluid barrel"); } - if(this.field_150939_a == ModBlocks.barrel_plastic) { - list.add(EnumChatFormatting.AQUA + "Capacity: 12,000mB"); - list.add(EnumChatFormatting.YELLOW + "Cannot store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - } - - if(this.field_150939_a == ModBlocks.barrel_corroded) { - list.add(EnumChatFormatting.AQUA + "Capacity: 6,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - list.add(EnumChatFormatting.RED + "Leaky"); - } - - if(this.field_150939_a == ModBlocks.barrel_iron) { - list.add(EnumChatFormatting.AQUA + "Capacity: 8,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - } - - if(this.field_150939_a == ModBlocks.barrel_steel) { - list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store highly corrosive fluids properly"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - } - - if(this.field_150939_a == ModBlocks.barrel_antimatter) { - list.add(EnumChatFormatting.AQUA + "Capacity: 16,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.GREEN + "Can store antimatter"); - } - - if(this.field_150939_a == ModBlocks.barrel_tcalloy) { - list.add(EnumChatFormatting.AQUA + "Capacity: 24,000mB"); - list.add(EnumChatFormatting.GREEN + "Can store hot fluids"); - list.add(EnumChatFormatting.GREEN + "Can store highly corrosive fluids"); - list.add(EnumChatFormatting.YELLOW + "Cannot store antimatter"); - } - if(this.field_150939_a == ModBlocks.meteor_battery) { list.add("Provides infinite charge to tesla coils"); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 17d5f20b5..a5a38fc36 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -249,6 +249,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceIron.class, new RenderFurnaceIron()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceSteel.class, new RenderFurnaceSteel()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterFirebox.class, new RenderFirebox()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOven.class, new RenderHeatingOven()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOilburner.class, new RenderOilburner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterElectric.class, new RenderElectricHeater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStirling.class, new RenderStirling()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index fb0d05b4f..e782a814e 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -59,6 +59,7 @@ public class ResourceManager { //Heaters public static final IModelCustom heater_firebox = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/firebox.obj")); + public static final IModelCustom heater_oven = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/heating_oven.obj")); public static final IModelCustom heater_oilburner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/oilburner.obj")); public static final IModelCustom heater_electric = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electric_heater.obj"), false); @@ -384,6 +385,7 @@ public class ResourceManager { //Heaters public static final ResourceLocation heater_firebox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/firebox.png"); + public static final ResourceLocation heater_oven_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heating_oven.png"); public static final ResourceLocation heater_oilburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/oilburner.png"); public static final ResourceLocation heater_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/electric_heater.png"); diff --git a/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java b/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java index 28c2aec96..1f715b9b3 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java +++ b/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java @@ -33,8 +33,9 @@ public class RenderMovingItem extends Render { GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F); GL11.glTranslated(0.0, -0.1875, 0.0); - if(!this.renderManager.options.fancyGraphics) - GL11.glTranslated(0.0, 0.0625, 0.0); + if(!this.renderManager.options.fancyGraphics) { + GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); + } } EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, stack); diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 5f1b7bf47..64d0cf687 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1297,17 +1297,6 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); }}); - renderers.put(Item.getItemFromBlock(ModBlocks.heater_firebox), new ItemRenderBase( ) { - public void renderInventory() { - GL11.glTranslated(0, -1, 0); - GL11.glScaled(3.25, 3.25, 3.25); - } - public void renderCommon() { - bindTexture(ResourceManager.heater_firebox_tex); - ResourceManager.heater_firebox.renderPart("Main"); - ResourceManager.heater_firebox.renderPart("Door"); - }}); - renderers.put(ModItems.gear_large, new ItemRenderBase( ) { public void renderInventory() { GL11.glTranslated(0, -7, 0); diff --git a/src/main/java/com/hbm/render/tileentity/RenderFirebox.java b/src/main/java/com/hbm/render/tileentity/RenderFirebox.java index 8584eb59a..6941d70fb 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFirebox.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFirebox.java @@ -3,14 +3,18 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.tileentity.machine.TileEntityHeaterFirebox; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderFirebox extends TileEntitySpecialRenderer { +public class RenderFirebox extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -58,4 +62,23 @@ public class RenderFirebox extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.heater_firebox); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(3.25, 3.25, 3.25); + } + public void renderCommon() { + bindTexture(ResourceManager.heater_firebox_tex); + ResourceManager.heater_firebox.renderPart("Main"); + ResourceManager.heater_firebox.renderPart("Door"); + }}; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderHeatingOven.java b/src/main/java/com/hbm/render/tileentity/RenderHeatingOven.java new file mode 100644 index 000000000..d9b4a494a --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderHeatingOven.java @@ -0,0 +1,82 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityHeaterOven; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderHeatingOven extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + } + GL11.glRotatef(-90, 0F, 1F, 0F); + + TileEntityHeaterOven oven = (TileEntityHeaterOven) tile; + + bindTexture(ResourceManager.heater_oven_tex); + ResourceManager.heater_oven.renderPart("Main"); + + GL11.glPushMatrix(); + float door = oven.prevDoorAngle + (oven.doorAngle - oven.prevDoorAngle) * interp; + GL11.glTranslated(0, 0, door * 0.75D / 135D); + ResourceManager.heater_oven.renderPart("Door"); + GL11.glPopMatrix(); + + if(oven.wasOn) { + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + ResourceManager.heater_oven.renderPart("InnerBurning"); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glPopAttrib(); + GL11.glPopMatrix(); + } else { + ResourceManager.heater_oven.renderPart("Inner"); + } + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.heater_oven); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(3.25, 3.25, 3.25); + } + public void renderCommon() { + bindTexture(ResourceManager.heater_oven_tex); + ResourceManager.heater_oven.renderPart("Main"); + ResourceManager.heater_oven.renderPart("Door"); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java b/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java index 38d2d49f5..5157a0463 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSteamEngine.java @@ -3,12 +3,17 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderSteamEngine extends TileEntitySpecialRenderer { +public class RenderSteamEngine extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -16,7 +21,6 @@ public class RenderSteamEngine extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); switch(tile.getBlockMetadata() - BlockDummyable.offset) { case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; @@ -24,32 +28,38 @@ public class RenderSteamEngine extends TileEntitySpecialRenderer { case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - GL11.glTranslated(2, 0, 0); - GL11.glShadeModel(GL11.GL_SMOOTH); double angle = System.currentTimeMillis() % 3600D; + GL11.glTranslated(2, 0, 0); + renderCommon(angle); + + GL11.glPopMatrix(); + } + + private void renderCommon(double rot) { + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.steam_engine_tex); ResourceManager.steam_engine.renderPart("Base"); GL11.glPushMatrix(); GL11.glTranslated(2, 1.375, 0); - GL11.glRotated(angle, 0, 0, -1); + GL11.glRotated(rot, 0, 0, -1); GL11.glTranslated(-2, -1.375, 0); ResourceManager.steam_engine.renderPart("Flywheel"); GL11.glPopMatrix(); GL11.glPushMatrix(); GL11.glTranslated(0, 1.375, -0.5); - GL11.glRotated(angle * 2D, 1, 0, 0); + GL11.glRotated(rot * 2D, 1, 0, 0); GL11.glTranslated(0, -1.375, 0.5); ResourceManager.steam_engine.renderPart("Shaft"); GL11.glPopMatrix(); GL11.glPushMatrix(); - double sin = Math.sin(angle * Math.PI / 180D) * 0.25D - 0.25D; - double cos = Math.cos(angle * Math.PI / 180D) * 0.25D; + double sin = Math.sin(rot * Math.PI / 180D) * 0.25D - 0.25D; + double cos = Math.cos(rot * Math.PI / 180D) * 0.25D; double ang = Math.acos(cos / 1.875D); GL11.glTranslated(sin, cos, 0); GL11.glTranslated(2.25, 1.375, 0); @@ -65,9 +75,27 @@ public class RenderSteamEngine extends TileEntitySpecialRenderer { GL11.glPopMatrix(); GL11.glShadeModel(GL11.GL_FLAT); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); } + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_steam_engine); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glRotatef(90, 0F, -1F, 0F); + GL11.glTranslated(0, -1.5, 0); + double scale = 2D; + GL11.glScaled(scale, scale, scale); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glRotatef(90, 0F, 1F, 0F); + boolean cog = item.getItemDamage() != 1; + RenderSteamEngine.this.renderCommon(cog ? System.currentTimeMillis() % 3600 * 0.1D : 0); + }}; + } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 25468674b..963dd41a8 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -231,6 +231,7 @@ public class TileMappings { private static void putMachines() { put(TileEntityHeaterFirebox.class, "tileentity_firebox"); + put(TileEntityHeaterOven.class, "tileentity_heating_oven"); put(TileEntityHeaterOilburner.class, "tileentity_oilburner"); put(TileEntityHeaterElectric.class, "tileentity_electric_heater"); put(TileEntityFurnaceIron.class, "tileentity_furnace_iron"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index e49f93902..05ac9a1ae 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -252,6 +252,9 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } protected void tryPullHeat() { + + if(this.heat >= this.maxHeat) return; + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); if(con instanceof IHeatSource) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java new file mode 100644 index 000000000..9fb40234e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -0,0 +1,201 @@ +package com.hbm.tileentity.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.module.ModuleBurnTime; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import api.hbm.tile.IHeatSource; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TileEntityFireboxBase extends TileEntityMachineBase implements IGUIProvider, IHeatSource { + + public int maxBurnTime; + public int burnTime; + public int burnHeat; + public boolean wasOn = false; + private int playersUsing = 0; + + public float doorAngle = 0; + public float prevDoorAngle = 0; + + public int heatEnergy; + + + public TileEntityFireboxBase() { + super(2); + } + + @Override + public void openInventory() { + if(!worldObj.isRemote) this.playersUsing++; + } + + @Override + public void closeInventory() { + if(!worldObj.isRemote) this.playersUsing--; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + wasOn = false; + + if(burnTime <= 0) { + + for(int i = 0; i < 2; i++) { + if(slots[i] != null) { + + int fuel = (int) (getModule().getBurnTime(slots[i]) * getTimeMult()); + + if(fuel > 0) { + this.maxBurnTime = this.burnTime = fuel; + this.burnHeat = getModule().getBurnHeat(getBaseHeat(), slots[i]); + slots[i].stackSize--; + + if(slots[i].stackSize == 0) { + slots[i] = slots[i].getItem().getContainerItem(slots[i]); + } + + this.wasOn = true; + break; + } + } + } + } else { + + if(this.heatEnergy < getMaxHeat()) { + burnTime--; + } + this.wasOn = true; + + if(worldObj.rand.nextInt(15) == 0) { + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "fire.fire", 1.0F, 0.5F + worldObj.rand.nextFloat() * 0.5F); + } + } + + if(wasOn) { + this.heatEnergy = Math.min(this.heatEnergy + this.burnHeat, getMaxHeat()); + } else { + this.heatEnergy = Math.max(this.heatEnergy - Math.max(this.heatEnergy / 1000, 1), 0); + this.burnHeat = 0; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("maxBurnTime", this.maxBurnTime); + data.setInteger("burnTime", this.burnTime); + data.setInteger("burnHeat", this.burnHeat); + data.setInteger("heatEnergy", this.heatEnergy); + data.setInteger("playersUsing", this.playersUsing); + data.setBoolean("wasOn", this.wasOn); + this.networkPack(data, 50); + } else { + this.prevDoorAngle = this.doorAngle; + float swingSpeed = (doorAngle / 10F) + 3; + + if(this.playersUsing > 0) { + this.doorAngle += swingSpeed; + } else { + this.doorAngle -= swingSpeed; + } + + this.doorAngle = MathHelper.clamp_float(this.doorAngle, 0F, 135F); + + if(wasOn && worldObj.getTotalWorldTime() % 5 == 0) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + double x = xCoord + 0.5 + dir.offsetX; + double y = yCoord + 0.25; + double z = zCoord + 0.5 + dir.offsetZ; + worldObj.spawnParticle("flame", x + worldObj.rand.nextDouble() * 0.5 - 0.25, y + worldObj.rand.nextDouble() * 0.25, z + worldObj.rand.nextDouble() * 0.5 - 0.25, 0, 0, 0); + } + } + } + + public abstract ModuleBurnTime getModule(); + public abstract int getBaseHeat(); + public abstract double getTimeMult(); + public abstract int getMaxHeat(); + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 0, 1 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return getModule().getBurnTime(itemStack) > 0; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.burnTime = nbt.getInteger("burnTime"); + this.burnHeat = nbt.getInteger("burnHeat"); + this.heatEnergy = nbt.getInteger("heatEnergy"); + this.playersUsing = nbt.getInteger("playersUsing"); + this.wasOn = nbt.getBoolean("wasOn"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.maxBurnTime = nbt.getInteger("maxBurnTime"); + this.burnTime = nbt.getInteger("burnTime"); + this.burnHeat = nbt.getInteger("burnHeat"); + this.heatEnergy = nbt.getInteger("heatEnergy"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("maxBurnTime", maxBurnTime); + nbt.setInteger("burnTime", burnTime); + nbt.setInteger("burnHeat", burnHeat); + nbt.setInteger("heatEnergy", heatEnergy); + } + + @Override + public int getHeatStored() { + return heatEnergy; + } + + @Override + public void useUpHeat(int heat) { + this.heatEnergy = Math.max(0, this.heatEnergy - heat); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java index 265b11fe5..642c99014 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java @@ -172,6 +172,9 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU } protected void tryPullHeat() { + + if(this.heat >= this.maxHeat) return; + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); if(con instanceof IHeatSource) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java index fc11a4f72..729640995 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java @@ -4,39 +4,21 @@ import java.io.IOException; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.blocks.BlockDummyable; import com.hbm.inventory.container.ContainerFirebox; import com.hbm.inventory.gui.GUIFirebox; +import com.hbm.lib.RefStrings; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; -import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeaterFirebox extends TileEntityMachineBase implements IGUIProvider, IHeatSource, IConfigurableMachine { - - public int maxBurnTime; - public int burnTime; - public int burnHeat; - public boolean wasOn = false; - private int playersUsing = 0; - - public float doorAngle = 0; - public float prevDoorAngle = 0; - - public int heatEnergy; +public class TileEntityHeaterFirebox extends TileEntityFireboxBase implements IConfigurableMachine { public static int baseHeat = 100; public static double timeMult = 1D; @@ -57,139 +39,32 @@ public class TileEntityHeaterFirebox extends TileEntityMachineBase implements IG .setBalefireHeatMod(15); public TileEntityHeaterFirebox() { - super(2); + super(); } @Override public String getName() { return "container.heaterFirebox"; } - + @Override - public void openInventory() { - if(!worldObj.isRemote) this.playersUsing++; - } - - @Override - public void closeInventory() { - if(!worldObj.isRemote) this.playersUsing--; + public ModuleBurnTime getModule() { + return burnModule; } @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - wasOn = false; - - if(burnTime <= 0) { - - for(int i = 0; i < 2; i++) { - if(slots[i] != null) { - - int fuel = (int) (burnModule.getBurnTime(slots[i]) * timeMult); - - if(fuel > 0) { - this.maxBurnTime = this.burnTime = fuel; - this.burnHeat = burnModule.getBurnHeat(baseHeat, slots[i]); - slots[i].stackSize--; - - if(slots[i].stackSize == 0) { - slots[i] = slots[i].getItem().getContainerItem(slots[i]); - } - - this.wasOn = true; - break; - } - } - } - } else { - - if(this.heatEnergy < this.maxHeatEnergy) { - burnTime--; - } - this.wasOn = true; - - if(worldObj.rand.nextInt(15) == 0) { - worldObj.playSoundEffect(xCoord, yCoord, zCoord, "fire.fire", 1.0F, 0.5F + worldObj.rand.nextFloat() * 0.5F); - } - } - - if(wasOn) { - this.heatEnergy = Math.min(this.heatEnergy + this.burnHeat, maxHeatEnergy); - } else { - this.heatEnergy = Math.max(this.heatEnergy - Math.max(this.heatEnergy / 1000, 1), 0); - this.burnHeat = 0; - } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("maxBurnTime", this.maxBurnTime); - data.setInteger("burnTime", this.burnTime); - data.setInteger("burnHeat", this.burnHeat); - data.setInteger("heatEnergy", this.heatEnergy); - data.setInteger("playersUsing", this.playersUsing); - data.setBoolean("wasOn", this.wasOn); - this.networkPack(data, 50); - } else { - this.prevDoorAngle = this.doorAngle; - float swingSpeed = (doorAngle / 10F) + 3; - - if(this.playersUsing > 0) { - this.doorAngle += swingSpeed; - } else { - this.doorAngle -= swingSpeed; - } - - this.doorAngle = MathHelper.clamp_float(this.doorAngle, 0F, 135F); - - if(wasOn && worldObj.getTotalWorldTime() % 5 == 0) { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - double x = xCoord + 0.5 + dir.offsetX; - double y = yCoord + 0.25; - double z = zCoord + 0.5 + dir.offsetZ; - worldObj.spawnParticle("flame", x + worldObj.rand.nextDouble() * 0.5 - 0.25, y + worldObj.rand.nextDouble() * 0.25, z + worldObj.rand.nextDouble() * 0.5 - 0.25, 0, 0, 0); - } - } + public int getBaseHeat() { + return baseHeat; } @Override - public int[] getAccessibleSlotsFromSide(int meta) { - return new int[] { 0, 1 }; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - return burnModule.getBurnTime(itemStack) > 0; + public double getTimeMult() { + return timeMult; } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.burnTime = nbt.getInteger("burnTime"); - this.burnHeat = nbt.getInteger("burnHeat"); - this.heatEnergy = nbt.getInteger("heatEnergy"); - this.playersUsing = nbt.getInteger("playersUsing"); - this.wasOn = nbt.getBoolean("wasOn"); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.burnTime = nbt.getInteger("burnTime"); - this.burnHeat = nbt.getInteger("burnHeat"); - this.heatEnergy = nbt.getInteger("heatEnergy"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - nbt.setInteger("maxBurnTime", maxBurnTime); - nbt.setInteger("burnTime", burnTime); - nbt.setInteger("burnHeat", burnHeat); - nbt.setInteger("heatEnergy", heatEnergy); + public int getMaxHeat() { + return maxHeatEnergy; } @Override @@ -197,45 +72,12 @@ public class TileEntityHeaterFirebox extends TileEntityMachineBase implements IG return new ContainerFirebox(player.inventory, this); } + @SideOnly(Side.CLIENT) private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_firebox.png"); + @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIFirebox(player.inventory, this); - } - - @Override - public int getHeatStored() { - return heatEnergy; - } - - @Override - public void useUpHeat(int heat) { - this.heatEnergy = Math.max(0, this.heatEnergy - heat); - } - - AxisAlignedBB bb = null; - - @Override - public AxisAlignedBB getRenderBoundingBox() { - - if(bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 1, - yCoord, - zCoord - 1, - xCoord + 2, - yCoord + 1, - zCoord + 2 - ); - } - - return bb; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; + return new GUIFirebox(player.inventory, this, texture); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java new file mode 100644 index 000000000..db252f124 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java @@ -0,0 +1,133 @@ +package com.hbm.tileentity.machine; + +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.container.ContainerFirebox; +import com.hbm.inventory.gui.GUIFirebox; +import com.hbm.lib.RefStrings; +import com.hbm.module.ModuleBurnTime; +import com.hbm.tileentity.IConfigurableMachine; + +import api.hbm.tile.IHeatSource; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class TileEntityHeaterOven extends TileEntityFireboxBase implements IConfigurableMachine { + + public static int baseHeat = 500; + public static double timeMult = 0.125D; + public static int maxHeatEnergy = 500_000; + public static double heatEff = 0.5D; + public static ModuleBurnTime burnModule = new ModuleBurnTime() + .setLigniteTimeMod(1.25) + .setCoalTimeMod(1.25) + .setCokeTimeMod(1.25) + .setSolidTimeMod(1.5) + .setRocketTimeMod(1.5) + .setBalefireTimeMod(0.5) + + .setLigniteHeatMod(2) + .setCoalHeatMod(2) + .setCokeHeatMod(2) + .setSolidHeatMod(3) + .setRocketHeatMod(5) + .setBalefireHeatMod(15); + + public TileEntityHeaterOven() { + super(); + } + + @Override + public String getName() { + return "container.heaterOven"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.tryPullHeat(); + } + + super.updateEntity(); + } + + protected void tryPullHeat() { + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(con instanceof IHeatSource) { + IHeatSource source = (IHeatSource) con; + int toPull = Math.max(Math.min(source.getHeatStored(), this.getMaxHeat() - this.heatEnergy), 0); + this.heatEnergy += toPull * heatEff; + source.useUpHeat(toPull); + } + } + + @Override + public ModuleBurnTime getModule() { + return burnModule; + } + + @Override + public int getBaseHeat() { + return baseHeat; + } + + @Override + public double getTimeMult() { + return timeMult; + } + + @Override + public int getMaxHeat() { + return maxHeatEnergy; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerFirebox(player.inventory, this); + } + + @SideOnly(Side.CLIENT) private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_heating_oven.png"); + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIFirebox(player.inventory, this, texture); + } + + @Override + public String getConfigName() { + return "heatingoven"; + } + + @Override + public void readIfPresent(JsonObject obj) { + baseHeat = IConfigurableMachine.grab(obj, "I:baseHeat", baseHeat); + timeMult = IConfigurableMachine.grab(obj, "D:burnTimeMult", timeMult); + heatEff = IConfigurableMachine.grab(obj, "D:heatPullEff", heatEff); + maxHeatEnergy = IConfigurableMachine.grab(obj, "I:heatCap", maxHeatEnergy); + if(obj.has("burnModule")) { + burnModule.readIfPresent(obj.get("M:burnModule").getAsJsonObject()); + } + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:baseHeat").value(baseHeat); + writer.name("D:burnTimeMult").value(timeMult); + writer.name("D:heatPullEff").value(heatEff); + writer.name("I:heatCap").value(maxHeatEnergy); + writer.name("M:burnModule").beginObject(); + burnModule.writeConfig(writer); + writer.endObject(); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index fb2b83933..43254da96 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -1,6 +1,8 @@ package com.hbm.tileentity.machine; +import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.recipes.CentrifugeRecipes; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; @@ -33,7 +35,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement private static final int[] slot_io = new int[] { 0, 2, 3, 4, 5 }; public TileEntityMachineCentrifuge() { - super(6); + super(8); } public String getName() { @@ -141,9 +143,21 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord); power = Library.chargeTEFromItems(slots, 1, power, maxPower); + + int consumption = 200; + int speed = 1; + + UpgradeManager.eval(slots, 6, 7); + speed += Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + consumption += Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) * 200; + + speed *= Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 5; + consumption += Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 10000; + + consumption /= (1 + Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3)); if(hasPower() && isProcessing()) { - this.power -= 200; + this.power -= consumption; if(this.power < 0) { this.power = 0; @@ -157,7 +171,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } if(isProgressing) { - progress++; + progress += speed; if(this.progress >= TileEntityMachineCentrifuge.processingSpeed) { this.progress = 0; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a85421006..b21620ee8 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -307,6 +307,7 @@ container.generator=Atomreaktor container.hadron=Teilchenbeschleuniger container.heaterFirebox=Feuerbüchse container.heaterOilburner=Brenner +container.heaterOven=Heizofen container.iGenerator=Industrieller Generator container.keyForge=Schlossertisch container.launchPad=Raketenabschussrampe @@ -3573,6 +3574,8 @@ tile.heater_firebox.name=Feuerbüchse tile.heater_firebox.desc=Erzeugt Wärme aus Festbrennstoff. tile.heater_oilburner.name=Brenner tile.heater_oilburner.desc=Erzäuft Wärme aus fluiden Brennstoffen. +tile.heater_oven.name=Heizofen +tile.heater_oven.desc=Erzeugt Wärme aus Festbrennstoff.$Nimmt von unten Wärme mit 50%% Effizienz auf. tile.hev_battery.name=Anzugs-Batterie tile.iter.name=Kernfusionsreaktor tile.ladder_aluminium.name=Aluminiumleiter diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 696b92e5f..4669e98a1 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -497,6 +497,7 @@ container.generator=Nuclear Reactor container.hadron=Particle Accelerator container.heaterFirebox=Firebox container.heaterOilburner=Fluid Burner +container.heaterOven=Heating Oven container.iGenerator=Industrial Generator container.keyForge=Locksmith Table container.launchPad=Missile Launch Pad @@ -4011,6 +4012,8 @@ tile.heater_firebox.name=Firebox tile.heater_firebox.desc=Burns solid fuel to produce heat. tile.heater_oilburner.name=Fluid Burner tile.heater_oilburner.desc=Burns fluids to produce heat. +tile.heater_oven.name=Heating Oven +tile.heater_oven.desc=Burns solid fuel to produce heat.$Accepts heat from the bottom with 50%% efficiency. tile.hev_battery.name=Suit Battery tile.iter.name=Fusion Reactor tile.ladder_aluminium.name=Aluminium Ladder diff --git a/src/main/resources/assets/hbm/models/machines/heating_oven.obj b/src/main/resources/assets/hbm/models/machines/heating_oven.obj new file mode 100644 index 000000000..3d0b7f250 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/heating_oven.obj @@ -0,0 +1,642 @@ +# Blender v2.79 (sub 0) OBJ File: 'heating_oven.blend' +# www.blender.org +o Door +v 1.500000 0.812500 0.437500 +v 1.500000 0.187500 0.437500 +v 1.500000 0.812500 -0.437500 +v 1.500000 0.187500 -0.437500 +v 1.562500 0.812500 -0.437500 +v 1.562500 0.812500 0.437500 +v 1.562500 0.187500 0.437500 +v 1.562500 0.187500 -0.437500 +v 1.625000 0.312500 -0.312500 +v 1.625000 0.312500 -0.250000 +v 1.625000 0.687500 -0.312500 +v 1.625000 0.687500 -0.250000 +v 1.562500 0.687500 -0.250000 +v 1.562500 0.687500 -0.312500 +v 1.562500 0.312500 -0.250000 +v 1.562500 0.312500 -0.312500 +v 1.562500 0.750000 -0.312500 +v 1.562500 0.250000 -0.312500 +v 1.562500 0.250000 -0.250000 +v 1.562500 0.750000 -0.250000 +v 1.687500 0.750000 -0.250000 +v 1.687500 0.250000 -0.250000 +v 1.687500 0.250000 -0.312500 +v 1.687500 0.750000 -0.312500 +vt 0.431034 0.196429 +vt 0.551724 0.285714 +vt 0.431034 0.285714 +vt 0.551724 0.187500 +vt 0.431034 0.187500 +vt 0.431034 0.294643 +vt 0.551724 0.294643 +vt 0.560345 0.285714 +vt 0.551724 0.196429 +vt 0.560345 0.196429 +vt 0.422414 0.196429 +vt 0.422414 0.285714 +vt 0.439655 0.401786 +vt 0.431034 0.410714 +vt 0.431034 0.392857 +vt 0.413793 0.312500 +vt 0.422414 0.303571 +vt 0.422414 0.321429 +vt 0.422414 0.392857 +vt 0.413793 0.330357 +vt 0.413793 0.401786 +vt 0.422414 0.410714 +vt 0.413793 0.410714 +vt 0.439655 0.383929 +vt 0.448276 0.330357 +vt 0.448276 0.383929 +vt 0.448276 0.410714 +vt 0.439655 0.410714 +vt 0.448276 0.312500 +vt 0.439655 0.303571 +vt 0.448276 0.303571 +vt 0.431034 0.321429 +vt 0.439655 0.312500 +vt 0.431034 0.303571 +vt 0.439655 0.330357 +vt 0.413793 0.303571 +vt 0.413793 0.383929 +vt 0.448276 0.401786 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 7/1/1 5/2/1 6/3/1 +f 4/4/2 7/1/2 2/5/2 +f 1/6/3 5/2/3 3/7/3 +f 3/8/4 8/9/4 4/10/4 +f 2/11/5 6/3/5 1/12/5 +f 11/13/4 17/14/4 24/15/4 +f 10/16/5 19/17/5 22/18/5 +f 21/19/5 10/20/5 22/18/5 +f 12/21/5 20/22/5 13/23/5 +f 11/24/6 10/25/6 12/26/6 +f 11/13/2 13/27/2 14/28/2 +f 10/29/3 16/30/3 15/31/3 +f 19/17/2 23/32/2 22/18/2 +f 17/14/3 21/19/3 24/15/3 +f 21/19/1 23/32/1 24/15/1 +f 9/33/4 18/34/4 16/30/4 +f 9/35/4 24/15/4 23/32/4 +f 7/1/1 8/9/1 5/2/1 +f 4/4/2 8/9/2 7/1/2 +f 1/6/3 6/3/3 5/2/3 +f 3/8/4 5/2/4 8/9/4 +f 2/11/5 7/1/5 6/3/5 +f 11/13/4 14/28/4 17/14/4 +f 10/16/5 15/36/5 19/17/5 +f 21/19/5 12/37/5 10/20/5 +f 12/21/5 21/19/5 20/22/5 +f 11/24/6 9/35/6 10/25/6 +f 11/13/2 12/38/2 13/27/2 +f 10/29/3 9/33/3 16/30/3 +f 19/17/2 18/34/2 23/32/2 +f 17/14/3 20/22/3 21/19/3 +f 21/19/1 22/18/1 23/32/1 +f 9/33/4 23/32/4 18/34/4 +f 9/35/4 11/24/4 24/15/4 +o Inner +v 1.375000 0.750000 -0.375000 +v 1.375000 0.750000 0.375000 +v 1.375000 0.250000 0.375000 +v 1.375000 0.250000 -0.375000 +v 1.375000 0.875000 -0.375000 +v 1.375000 0.875000 0.375000 +v 1.375000 0.125000 0.375000 +v 1.375000 0.125000 -0.375000 +v 0.625000 0.875000 -0.375000 +v 0.625000 0.875000 0.375000 +v 0.625000 0.125000 0.375000 +v 0.625000 0.125000 -0.375000 +vt 0.689655 0.196429 +vt 0.586207 0.214286 +vt 0.586207 0.196429 +vt 0.586207 0.125000 +vt 0.689655 0.107143 +vt 0.689655 0.125000 +vt 0.896552 -0.000000 +vt 0.793103 0.107143 +vt 0.793103 -0.000000 +vt 0.793103 0.321429 +vt 0.896552 0.214286 +vt 0.896552 0.321429 +vt 0.793103 0.214286 +vt 0.896552 0.107143 +vt 0.689655 0.214286 +vt 1.000000 0.125000 +vt 0.586207 0.107143 +vt 1.000000 0.107143 +vt 1.000000 0.196429 +vt 1.000000 0.214286 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 26/39/7 29/40/7 25/41/7 +f 28/42/7 31/43/7 27/44/7 +f 32/45/8 35/46/8 31/47/8 +f 30/48/9 33/49/9 29/50/9 +f 34/51/10 36/52/10 33/49/10 +f 34/51/11 30/53/11 26/39/11 +f 33/49/12 36/52/12 28/54/12 +f 26/39/7 30/53/7 29/40/7 +f 28/42/7 32/55/7 31/43/7 +f 32/45/8 36/52/8 35/46/8 +f 30/48/9 34/51/9 33/49/9 +f 34/51/10 35/46/10 36/52/10 +f 26/39/11 27/44/11 34/51/11 +f 27/44/11 31/43/11 35/46/11 +f 34/51/11 27/44/11 35/46/11 +f 32/56/12 28/54/12 36/52/12 +f 28/54/12 25/57/12 33/49/12 +f 25/57/12 29/58/12 33/49/12 +o InnerBurning +v 1.375000 0.125000 0.375000 +v 1.375000 0.125000 -0.375000 +v 0.625000 0.125000 0.375000 +v 0.625000 0.250000 -0.375000 +v 1.375000 0.125000 0.250000 +v 1.375000 0.187500 0.125000 +v 1.375000 0.187500 -0.000000 +v 1.375000 0.125000 -0.125000 +v 1.375000 0.125000 -0.250000 +v 0.625000 0.187500 0.250000 +v 0.625000 0.250000 0.125000 +v 0.625000 0.250000 -0.000000 +v 0.625000 0.187500 -0.125000 +v 0.625000 0.187500 -0.250000 +v 0.750000 0.187500 0.375000 +v 0.875000 0.187500 0.375000 +v 1.000000 0.250000 0.375000 +v 1.125000 0.187500 0.375000 +v 1.250000 0.125000 0.375000 +v 1.250000 0.125000 -0.375000 +v 1.125000 0.187500 -0.375000 +v 1.000000 0.125000 -0.375000 +v 0.875000 0.187500 -0.375000 +v 0.750000 0.187500 -0.375000 +v 1.250000 0.187500 0.250000 +v 1.125000 0.187500 0.250000 +v 1.000000 0.250000 0.250000 +v 0.875000 0.250000 0.250000 +v 0.750000 0.187500 0.250000 +v 1.250000 0.187500 0.125000 +v 1.125000 0.250000 0.125000 +v 1.000000 0.250000 0.125000 +v 0.875000 0.312500 0.125000 +v 0.750000 0.250000 0.125000 +v 1.250000 0.187500 -0.000000 +v 1.125000 0.250000 -0.000000 +v 1.000000 0.312500 -0.000000 +v 0.875000 0.312500 -0.000000 +v 0.750000 0.250000 -0.000000 +v 1.250000 0.187500 -0.125000 +v 1.125000 0.250000 -0.125000 +v 1.000000 0.250000 -0.125000 +v 0.875000 0.250000 -0.125000 +v 0.750000 0.250000 -0.125000 +v 1.250000 0.187500 -0.250000 +v 1.125000 0.187500 -0.250000 +v 1.000000 0.187500 -0.250000 +v 0.875000 0.187500 -0.250000 +v 0.750000 0.250000 -0.250000 +v 1.375000 0.750000 -0.375000 +v 1.375000 0.750000 0.375000 +v 1.375000 0.250000 0.375000 +v 1.375000 0.250000 -0.375000 +v 1.375000 0.875000 -0.375000 +v 1.375000 0.875000 0.375000 +v 1.375000 0.125000 0.375000 +v 1.375000 0.125000 -0.375000 +v 0.625000 0.875000 -0.375000 +v 0.625000 0.875000 0.375000 +v 0.625000 0.125000 0.375000 +v 0.625000 0.125000 -0.375000 +vt 0.879310 0.410714 +vt 0.896552 0.410714 +vt 0.879310 0.428571 +vt 0.793103 0.410714 +vt 0.810345 0.410714 +vt 0.793103 0.428571 +vt 0.827586 0.410714 +vt 0.810345 0.428571 +vt 0.844828 0.410714 +vt 0.827586 0.428571 +vt 0.862069 0.410714 +vt 0.844828 0.428571 +vt 0.862069 0.428571 +vt 0.793103 0.321429 +vt 0.810345 0.321429 +vt 0.793103 0.339286 +vt 0.810345 0.339286 +vt 0.793103 0.357143 +vt 0.810345 0.357143 +vt 0.793103 0.375000 +vt 0.810345 0.375000 +vt 0.810345 0.392857 +vt 0.793103 0.392857 +vt 0.827586 0.321429 +vt 0.827586 0.339286 +vt 0.827586 0.357143 +vt 0.827586 0.375000 +vt 0.827586 0.392857 +vt 0.844828 0.321429 +vt 0.844828 0.339286 +vt 0.844828 0.357143 +vt 0.844828 0.375000 +vt 0.844828 0.392857 +vt 0.862069 0.339286 +vt 0.862069 0.357143 +vt 0.862069 0.375000 +vt 0.879310 0.321429 +vt 0.862069 0.321429 +vt 0.879310 0.339286 +vt 0.879310 0.357143 +vt 0.879310 0.375000 +vt 0.862069 0.392857 +vt 0.879310 0.392857 +vt 0.896552 0.339286 +vt 0.896552 0.357143 +vt 0.896552 0.375000 +vt 0.896552 0.321429 +vt 0.896552 0.392857 +vt 0.896552 0.428571 +vt 0.689655 0.517857 +vt 0.586207 0.535714 +vt 0.586207 0.517857 +vt 0.586207 0.446429 +vt 0.689655 0.428571 +vt 0.689655 0.446429 +vt 0.793103 0.642857 +vt 0.896552 0.535714 +vt 0.896552 0.642857 +vt 0.793103 0.535714 +vt 0.896552 0.428571 +vt 0.689655 0.535714 +vt 1.000000 0.446429 +vt 0.586207 0.428571 +vt 0.793103 0.428571 +vt 1.000000 0.428571 +vt 1.000000 0.517857 +vt 1.000000 0.535714 +vn -0.4082 0.8165 -0.4082 +vn -0.4472 0.8944 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 1.0000 0.0000 +vn 0.4082 0.8165 0.4082 +vn 0.4472 0.8944 0.0000 +vn -0.4082 0.8165 0.4082 +vn 0.0000 0.8944 -0.4472 +vn 0.4082 0.8165 -0.4082 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 85/59/13 60/60/13 50/61/13 +f 51/62/14 65/63/14 39/64/14 +f 70/65/15 46/66/15 65/63/15 +f 75/67/16 47/68/16 70/65/16 +f 75/67/16 80/69/16 48/70/16 +f 80/69/14 85/59/14 49/71/14 +f 37/72/16 41/73/16 55/74/16 +f 55/74/17 61/75/17 54/76/17 +f 62/77/18 53/78/18 54/76/18 +f 53/78/16 63/79/16 64/80/16 +f 52/81/19 64/80/19 65/63/19 +f 42/82/17 61/75/17 41/73/17 +f 61/75/18 66/83/18 67/84/18 +f 62/77/17 67/84/17 63/79/17 +f 63/79/18 68/85/18 69/86/18 +f 64/80/19 70/65/19 65/63/19 +f 43/87/16 66/83/16 42/82/16 +f 71/88/18 67/84/18 66/83/18 +f 67/84/18 72/89/18 73/90/18 +f 68/85/17 73/90/17 69/86/17 +f 74/91/14 70/65/14 69/86/14 +f 43/87/16 76/92/16 71/88/16 +f 76/92/18 72/89/18 71/88/18 +f 72/89/18 77/93/18 73/90/18 +f 78/94/20 74/91/20 73/90/20 +f 74/91/14 80/69/14 75/67/14 +f 45/95/18 76/92/18 44/96/18 +f 76/92/18 81/97/18 77/93/18 +f 82/98/20 78/94/20 77/93/20 +f 83/99/20 79/100/20 78/94/20 +f 79/100/21 84/101/21 85/59/21 +f 45/95/21 56/102/21 81/97/21 +f 81/97/21 56/102/21 57/103/21 +f 57/103/16 83/99/16 82/98/16 +f 83/99/20 58/104/20 84/101/20 +f 84/101/21 60/60/21 85/59/21 +f 55/74/17 41/73/17 61/75/17 +f 54/76/16 61/75/16 62/77/16 +f 73/90/15 68/85/15 67/84/15 +f 67/84/15 62/77/15 61/75/15 +f 69/86/16 73/90/16 74/91/16 +f 73/90/20 77/93/20 78/94/20 +f 63/79/16 67/84/16 68/85/16 +f 77/93/20 81/97/20 82/98/20 +f 69/86/15 64/80/15 63/79/15 +f 76/92/21 43/87/21 44/96/21 +f 56/102/16 45/95/16 38/105/16 +f 84/101/18 58/104/18 59/106/18 +f 49/71/14 85/59/14 50/61/14 +f 85/59/16 80/69/16 79/100/16 +f 50/61/17 60/60/17 40/107/17 +f 48/70/13 80/69/13 49/71/13 +f 80/69/20 74/91/20 79/100/20 +f 39/64/15 65/63/15 46/66/15 +f 65/63/16 51/62/16 52/81/16 +f 87/108/22 90/109/22 86/110/22 +f 64/80/19 52/81/19 53/78/19 +f 57/103/16 82/98/16 81/97/16 +f 89/111/22 92/112/22 88/113/22 +f 91/114/23 94/115/23 90/116/23 +f 95/117/24 97/118/24 94/115/24 +f 95/117/25 91/119/25 87/108/25 +f 94/115/26 97/118/26 89/120/26 +f 70/65/15 47/68/15 46/66/15 +f 75/67/16 48/70/16 47/68/16 +f 62/77/18 63/79/18 53/78/18 +f 42/82/16 66/83/16 61/75/16 +f 64/80/19 69/86/19 70/65/19 +f 43/87/16 71/88/16 66/83/16 +f 71/88/18 72/89/18 67/84/18 +f 74/91/14 75/67/14 70/65/14 +f 76/92/18 77/93/18 72/89/18 +f 78/94/20 79/100/20 74/91/20 +f 45/95/18 81/97/18 76/92/18 +f 82/98/20 83/99/20 78/94/20 +f 83/99/20 84/101/20 79/100/20 +f 57/103/13 58/104/13 83/99/13 +f 84/101/16 59/106/16 60/60/16 +f 87/108/22 91/119/22 90/109/22 +f 89/111/22 93/121/22 92/112/22 +f 91/114/23 95/117/23 94/115/23 +f 95/117/24 96/122/24 97/118/24 +f 87/108/25 88/113/25 95/117/25 +f 88/113/25 92/112/25 96/122/25 +f 95/117/25 88/113/25 96/122/25 +f 93/123/26 89/120/26 97/118/26 +f 89/120/26 86/124/26 94/115/26 +f 86/124/26 90/125/26 94/115/26 +o Main +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.437500 1.000000 -0.437500 +v -0.437500 1.000000 0.437500 +v 0.437500 1.000000 0.437500 +v 0.437500 1.000000 -0.437500 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.437500 0.000000 -0.437500 +v -0.437500 0.000000 0.437500 +v 0.437500 0.000000 0.437500 +v 0.437500 0.000000 -0.437500 +v -0.500000 0.062500 -0.500000 +v -0.500000 0.062500 0.500000 +v 0.500000 0.062500 0.500000 +v 0.500000 0.062500 -0.500000 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v 0.437500 0.062500 0.437500 +v 0.437500 0.062500 -0.437500 +v -0.500000 0.937500 -0.500000 +v -0.500000 0.937500 0.500000 +v 0.500000 0.937500 0.500000 +v 0.500000 0.937500 -0.500000 +v -0.437500 0.937500 -0.437500 +v -0.437500 0.937500 0.437500 +v 0.437500 0.937500 0.437500 +v 0.437500 0.937500 -0.437500 +v 1.500000 0.750000 0.375000 +v 1.500000 0.250000 0.375000 +v 1.500000 0.750000 -0.375000 +v 1.500000 0.250000 -0.375000 +v 1.375000 0.750000 -0.375000 +v 1.375000 0.750000 0.375000 +v 1.375000 0.250000 0.375000 +v 1.375000 0.250000 -0.375000 +vt 0.568965 0.000000 +vt 0.431034 0.008929 +vt 0.431034 -0.000000 +vt 0.275862 0.714286 +vt 0.000000 0.571429 +vt 0.413793 0.571429 +vt 0.413793 0.428571 +vt -0.000000 0.571429 +vt -0.000000 0.428571 +vt 0.155172 0.535714 +vt 0.413793 0.428571 +vt 0.000000 0.571429 +vt 0.000000 0.428571 +vt 0.413793 0.428571 +vt 0.000000 0.571429 +vt 0.000000 0.428571 +vt 0.586207 0.160714 +vt 0.577586 0.017857 +vt 0.586207 0.017857 +vt 0.275862 0.857143 +vt 0.413793 1.000000 +vt 0.137931 0.857143 +vt 0.000000 1.000000 +vt 0.137931 0.714286 +vt 0.439655 0.026786 +vt 0.560345 0.151786 +vt 0.439655 0.151786 +vt 0.431034 0.026786 +vt 0.431034 0.178571 +vt 0.568965 0.169643 +vt 0.568965 0.178571 +vt 0.560345 0.026786 +vt 0.568965 0.151786 +vt 0.560345 0.026786 +vt 0.439655 0.151786 +vt 0.439655 0.026786 +vt 0.431034 0.178571 +vt 0.568965 0.169643 +vt 0.568965 0.178571 +vt 0.560345 0.017857 +vt 0.560345 0.151786 +vt 0.439655 0.160714 +vt 0.413793 0.000000 +vt 0.137931 0.142857 +vt 0.000000 0.000000 +vt 0.413793 0.428571 +vt 0.275862 0.142857 +vt 0.000000 0.428571 +vt 0.275862 0.285714 +vt 0.137931 0.285714 +vt 0.568965 0.008929 +vt 0.568965 0.151786 +vt 0.577586 0.017857 +vt 0.577586 0.160714 +vt 0.431034 0.026786 +vt 0.422414 0.160714 +vt 0.422414 0.017857 +vt 0.431034 0.169643 +vt 0.586207 0.160714 +vt 0.586207 0.017857 +vt 0.413793 0.017857 +vt 0.413793 0.160714 +vt 0.431034 0.169643 +vt 0.560345 0.160714 +vt 0.577586 0.160714 +vt 0.568965 0.026786 +vt 0.422414 0.017857 +vt 0.431034 0.151786 +vt 0.422414 0.160714 +vt 0.568965 0.008929 +vt 0.439655 0.017857 +vt 0.431034 0.008929 +vt 0.413793 0.017857 +vt 0.413793 0.160714 +vt 0.560345 0.017857 +vt 0.439655 0.160714 +vt 0.568965 -0.000000 +vt 0.431034 -0.000000 +vt 0.689655 0.214286 +vt 0.586207 0.232143 +vt 0.586207 0.214286 +vt 0.258621 0.535714 +vt 0.258621 0.464286 +vt 0.155172 0.464286 +vt 0.586207 0.321429 +vt 0.689655 0.303571 +vt 0.689655 0.321429 +vt 0.706897 0.303571 +vt 0.689655 0.232143 +vt 0.706897 0.232143 +vt 0.568965 0.232143 +vt 0.586207 0.303571 +vt 0.568965 0.303571 +vt 0.413793 0.571429 +vt 0.413793 0.571429 +vt 0.413793 0.571429 +vt 0.439655 0.017857 +vt 0.560345 0.160714 +vt 0.568965 0.026786 +vt 0.431034 0.151786 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 116/126/27 123/127/27 114/128/27 +f 109/129/28 103/130/28 105/131/28 +f 99/132/29 102/133/29 98/134/29 +f 138/135/27 105/131/27 103/130/27 +f 98/136/30 104/137/30 100/138/30 +f 100/139/31 105/140/31 101/141/31 +f 108/142/29 133/143/29 109/144/29 +f 108/145/28 105/131/28 104/146/28 +f 106/147/28 104/146/28 102/148/28 +f 107/149/28 102/148/28 103/130/28 +f 112/150/28 110/151/28 111/152/28 +f 111/152/29 136/153/29 112/150/29 +f 106/154/27 130/155/27 108/156/27 +f 113/157/31 134/158/31 110/151/31 +f 118/159/32 120/160/32 119/161/32 +f 115/162/30 125/163/30 117/164/30 +f 119/161/30 126/165/30 118/159/30 +f 121/166/27 128/167/27 120/160/27 +f 100/168/32 114/169/32 98/170/32 +f 101/171/32 116/172/32 100/168/32 +f 99/173/32 117/174/32 101/171/32 +f 98/170/32 115/175/32 99/173/32 +f 126/165/32 123/127/32 122/176/32 +f 129/177/32 122/178/32 125/179/32 +f 127/180/32 124/181/32 123/182/32 +f 128/167/32 125/163/32 124/183/32 +f 118/159/31 129/177/31 121/166/31 +f 120/160/29 127/180/29 119/161/29 +f 117/184/29 122/178/29 116/185/29 +f 114/186/31 124/181/31 115/187/31 +f 131/188/28 134/189/28 130/155/28 +f 130/190/28 137/191/28 133/143/28 +f 132/192/28 135/193/28 131/194/28 +f 133/195/28 136/196/28 132/197/28 +f 107/198/31 131/194/31 106/199/31 +f 112/150/27 137/200/27 113/157/27 +f 110/151/30 135/201/30 111/152/30 +f 109/202/30 132/197/30 107/203/30 +f 141/204/28 144/205/28 139/206/28 +f 140/207/27 101/171/27 105/131/27 +f 141/208/27 99/173/27 101/171/27 +f 139/209/27 103/130/27 99/173/27 +f 138/210/32 142/211/32 140/212/32 +f 140/213/29 145/214/29 141/215/29 +f 139/216/31 143/217/31 138/218/31 +f 116/126/27 122/176/27 123/127/27 +f 109/129/28 107/149/28 103/130/28 +f 99/132/29 103/219/29 102/133/29 +f 138/135/27 140/207/27 105/131/27 +f 98/136/30 102/220/30 104/137/30 +f 100/139/31 104/221/31 105/140/31 +f 108/142/29 130/190/29 133/143/29 +f 108/145/28 109/129/28 105/131/28 +f 106/147/28 108/145/28 104/146/28 +f 107/149/28 106/147/28 102/148/28 +f 112/150/28 113/157/28 110/151/28 +f 111/152/29 135/193/29 136/153/29 +f 106/154/27 131/188/27 130/155/27 +f 113/157/31 137/191/31 134/158/31 +f 118/159/32 121/166/32 120/160/32 +f 115/162/30 124/183/30 125/163/30 +f 119/161/30 127/222/30 126/165/30 +f 121/166/27 129/223/27 128/167/27 +f 100/168/32 116/172/32 114/169/32 +f 101/171/32 117/174/32 116/172/32 +f 99/173/32 115/175/32 117/174/32 +f 98/170/32 114/169/32 115/175/32 +f 126/165/32 127/222/32 123/127/32 +f 129/177/32 126/224/32 122/178/32 +f 127/180/32 128/225/32 124/181/32 +f 128/167/32 129/223/32 125/163/32 +f 118/159/31 126/224/31 129/177/31 +f 120/160/29 128/225/29 127/180/29 +f 117/184/29 125/179/29 122/178/29 +f 114/186/31 123/182/31 124/181/31 +f 131/188/28 135/201/28 134/189/28 +f 130/190/28 134/158/28 137/191/28 +f 132/192/28 136/153/28 135/193/28 +f 133/195/28 137/200/28 136/196/28 +f 107/198/31 132/192/31 131/194/31 +f 112/150/27 136/196/27 137/200/27 +f 110/151/30 134/189/30 135/201/30 +f 109/202/30 133/195/30 132/197/30 +f 141/204/28 145/214/28 144/205/28 +f 140/207/27 141/208/27 101/171/27 +f 141/208/27 139/209/27 99/173/27 +f 139/209/27 138/135/27 103/130/27 +f 138/210/32 143/217/32 142/211/32 +f 140/213/29 142/211/29 145/214/29 +f 139/216/31 144/205/31 143/217/31 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 9f9711070..f601d8d66 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -26,7 +26,7 @@ "block.lockOpen": {"category": "block", "sounds": [{"name": "block/lockOpen", "stream": false}]}, "block.lockHang": {"category": "block", "sounds": [{"name": "block/lockHang", "stream": false}]}, "block.debris": {"category": "block", "sounds": ["block/debris1", "block/debris2", "block/debris3"]}, - "block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": true}]}, + "block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": false}]}, "block.pipePlaced": {"category": "block", "sounds": [{"name": "block/pipePlaced", "stream": false}]}, "block.missileAssembly": {"category": "block", "sounds": [{"name": "block/missileAssembly", "stream": false}]}, "block.missileAssembly2": {"category": "block", "sounds": [{"name": "block/missileAssembly2", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/textures/gui/centrifuge.png b/src/main/resources/assets/hbm/textures/gui/centrifuge.png deleted file mode 100644 index f369d74b9..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/centrifuge.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_heating_oven.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_heating_oven.png new file mode 100644 index 000000000..de8b2b0ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_heating_oven.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png new file mode 100644 index 000000000..8852afa9c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/heating_oven.png b/src/main/resources/assets/hbm/textures/models/machines/heating_oven.png new file mode 100644 index 000000000..c441b5062 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/heating_oven.png differ