new centrifuge GUI, heating oven

This commit is contained in:
Bob 2022-11-05 22:41:38 +01:00
parent 01aad6bc56
commit 8aa63082b9
33 changed files with 1347 additions and 322 deletions

View File

@ -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);

View File

@ -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");
}
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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) {

View File

@ -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();

View File

@ -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<String> bonuses = this.firebox.burnModule.getDesc();
List<String> 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);

View File

@ -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;
}
}
}
}

View File

@ -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),

View File

@ -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");
}

View File

@ -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());

View File

@ -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");

View File

@ -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);

View File

@ -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);

View File

@ -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");
}};
}
}

View File

@ -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");
}};
}
}

View File

@ -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);
}};
}
}

View File

@ -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");

View File

@ -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) {

View File

@ -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;
}
}

View File

@ -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) {

View File

@ -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

View File

@ -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();
}
}

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}]},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB