diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 5d65dd3f6..d3c70763b 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -868,7 +868,8 @@ public class ModBlocks { public static Block machine_geo; public static Block machine_minirtg; public static Block machine_powerrtg; - + public static Block machine_radiolysis; + public static Block machine_well; public static Block oil_pipe; public static final int guiID_machine_well = 40; @@ -1789,7 +1790,8 @@ public class ModBlocks { machine_geo = new MachineAmgen(Material.iron).setBlockName("machine_geo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_minirtg = new MachineMiniRTG(Material.iron).setBlockName("machine_minirtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_cell"); machine_powerrtg = new MachineMiniRTG(Material.iron).setBlockName("machine_powerrtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_polonium"); - + machine_radiolysis = new MachineRadiolysis(Material.iron).setBlockName("machine_radiolysis").setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + red_wire_coated = new WireCoated(Material.iron).setBlockName("red_wire_coated").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_wire_coated"); red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); rf_cable = new BlockRFCable(Material.iron).setBlockName("rf_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rf_cable_icon"); @@ -2819,6 +2821,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); GameRegistry.registerBlock(machine_minirtg, machine_minirtg.getUnlocalizedName()); GameRegistry.registerBlock(machine_powerrtg, machine_powerrtg.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radiolysis, machine_radiolysis.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_bottom, machine_spp_bottom.getUnlocalizedName()); GameRegistry.registerBlock(machine_spp_top, machine_spp_top.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadiolysis.java b/src/main/java/com/hbm/blocks/machine/MachineRadiolysis.java new file mode 100644 index 000000000..70155f788 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineRadiolysis.java @@ -0,0 +1,71 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.BossSpawnHandler; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineRadiolysis; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineRadiolysis extends BlockDummyable { + + public MachineRadiolysis(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) + return new TileEntityMachineRadiolysis(); + if(meta >= 6) + return new TileEntityProxyCombo(true, true, true); + + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(world.isRemote) { + return true; + } else if(!player.isSneaking()) { + BossSpawnHandler.markFBI(player); + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return false; + + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); + return true; + } else { + return false; + } + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 1, 1, 1,}; + } + + @Override + public int getOffset() { + return 0; + } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); + } +} diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index b56c8f072..6adb78442 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -2,6 +2,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteShort; import static com.hbm.inventory.OreDictManager.*; @@ -11,6 +12,7 @@ import net.minecraft.block.Block; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; @@ -160,6 +162,9 @@ public class MineralRecipes { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_po210be, 1), new Object[] { "nuggetPolonium210", "nuggetPolonium210", "nuggetPolonium210", ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_pu238be, 1), new Object[] { "nuggetPlutonium238", "nuggetPlutonium238", "nuggetPlutonium238", ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_ra226be, 1), new Object[] { "nuggetRadium226", "nuggetRadium226", "nuggetRadium226", ModItems.nugget_beryllium, ModItems.nugget_beryllium, ModItems.nugget_beryllium })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_po210be, 2), new Object[] { ModItems.billet_polonium, ModItems.billet_beryllium })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_pu238be, 2), new Object[] { ModItems.billet_pu238, ModItems.billet_beryllium })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_ra226be, 2), new Object[] { ModItems.billet_ra226, ModItems.billet_beryllium })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_po210be, 6), new Object[] { ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_beryllium, ModItems.billet_beryllium, ModItems.billet_beryllium })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_pu238be, 6), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_beryllium, ModItems.billet_beryllium, ModItems.billet_beryllium })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_ra226be, 6), new Object[] { ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_beryllium, ModItems.billet_beryllium, ModItems.billet_beryllium })); @@ -211,12 +216,22 @@ public class MineralRecipes { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_radium), new Object[] { ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_ra226, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_weak), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_pu238, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_strontium), new Object[] { ModItems.billet_sr90, ModItems.billet_sr90, ModItems.billet_sr90, "plateIron" })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_cobalt), new Object[] { ModItems.billet_co60, ModItems.billet_co60, ModItems.billet_co60, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_actinium), new Object[] { ModItems.billet_actinium, ModItems.billet_actinium, ModItems.billet_actinium, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_polonium), new Object[] { ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_polonium, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_lead), new Object[] { ModItems.billet_pb209, ModItems.billet_pb209, ModItems.billet_pb209, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_gold), new Object[] { ModItems.billet_au198, ModItems.billet_au198, ModItems.billet_au198, "plateIron" })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_americium), new Object[] { ModItems.billet_am241, ModItems.billet_am241, ModItems.billet_am241, "plateIron" })); + //There's no need for anvil recycling recipes if you simply set the container item + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_bismuth, 3), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.BISMUTH.ordinal()) }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_lead, 2), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.LEAD.ordinal()) }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_mercury, 2), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.MERCURY.ordinal()) }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_neptunium, 3), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.NEPTUNIUM.ordinal()) }); + GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_zirconium, 3), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.ZIRCONIUM.ordinal()) }); + if(OreDictionary.doesOreNameExist("ingotNickel")) + GameRegistry.addShapelessRecipe(new ItemStack(OreDictionary.getOres("ingotNickel").get(0).getItem(), 2), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.NICKEL.ordinal()) }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_copper), 1), new Object[] { "###", "###", "###", '#', ModItems.ingot_copper }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_fluorite), 1), new Object[] { "###", "###", "###", '#', ModItems.fluorite }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.block_niter), 1), new Object[] { "###", "###", "###", '#', ModItems.niter }); diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 62f36d35e..a831abc71 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -35,6 +35,10 @@ public class GUIHandler implements IGuiHandler { return new ContainerSolidifier(player.inventory, (TileEntityMachineSolidifier) entity); } + if(entity instanceof TileEntityMachineRadiolysis) { + return new ContainerRadiolysis(player.inventory, (TileEntityMachineRadiolysis) entity); + } + switch(ID) { case ModBlocks.guiID_test_difurnace: { if(entity instanceof TileEntityDiFurnace) { @@ -878,6 +882,10 @@ public class GUIHandler implements IGuiHandler { return new GUISolidifier(player.inventory, (TileEntityMachineSolidifier) entity); } + if(entity instanceof TileEntityMachineRadiolysis) { + return new GUIRadiolysis(player.inventory, (TileEntityMachineRadiolysis) entity); + } + switch(ID) { case ModBlocks.guiID_test_difurnace: { if(entity instanceof TileEntityDiFurnace) { diff --git a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java new file mode 100644 index 000000000..edd81d147 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java @@ -0,0 +1,132 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIRadiolysis; +import com.hbm.inventory.recipes.RadiolysisRecipes; +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.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; + +public class RadiolysisRecipeHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + PositionedStack input; + PositionedStack output1; + PositionedStack output2; + + public RecipeSet(ItemStack input, ItemStack output1, ItemStack output2) { + input.stackSize = 1; + this.input = new PositionedStack(input, 34, 25); + this.output1 = new PositionedStack(output1, 118, 16); + this.output2 = new PositionedStack(output2, 118, 34); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 20, Arrays.asList(input)); + } + + @Override + public PositionedStack getResult() { + return output1; + } + + @Override + public List getOtherStacks() { + List stacks = new ArrayList(); + stacks.add(output2); + return stacks; + } + } + + @Override + public String getRecipeName() { + return "Radiolysis"; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_radiolysis.png"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + + if(outputId.equals("ntmRadiolysis")) { + HashMap recipes = (HashMap) RadiolysisRecipes.getRecipesForNEI(); + + for(Entry recipe : recipes.entrySet()) { + this.arecipes.add(new RecipeSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1])); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + HashMap recipes = (HashMap) RadiolysisRecipes.getRecipesForNEI(); + + for(Entry recipe : recipes.entrySet()) { + if(NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[0], result) || NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue()[1], result)) + this.arecipes.add(new RecipeSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1])); + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + + if(inputId.equals("ntmRadiolysis")) { + loadCraftingRecipes("ntmRadiolysis", new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + HashMap recipes = (HashMap) RadiolysisRecipes.getRecipesForNEI(); + + for(Entry recipe : recipes.entrySet()) { + if(NEIServerUtils.areStacksSameType((ItemStack)recipe.getKey(), ingredient)) + this.arecipes.add(new RecipeSet((ItemStack)recipe.getKey(), (ItemStack)recipe.getValue()[0], (ItemStack)recipe.getValue()[1])); + } + } + + @Override + public void drawExtras(int recipe) { + drawProgressBar(52, 19, 5, 87, 64, 28, 60, 0); + } + + @Override + public void loadTransferRects() { + transferRectsGui = new LinkedList(); + guiGui = new LinkedList>(); + + transferRects.add(new RecipeTransferRect(new Rectangle(52, 19, 64, 27), "ntmRadiolysis")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(66, 25, 25, 14), "ntmRadiolysis")); + guiGui.add(GUIRadiolysis.class); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + +} diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 13b0d6672..711297671 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -253,8 +253,8 @@ public class HazardRegistry { registerOtherFuel(plate_fuel_mox, mox * ingot, mox * ingot * 100, false); registerOtherFuel(plate_fuel_pu239, pu239 * ingot, pu239 * ingot * 100, false); registerOtherFuel(plate_fuel_sa326, sa326 * ingot, sa326 * ingot * 100, true); - registerOtherFuel(plate_fuel_ra226be, rabe * ingot, po210 * nugget * 3, false); - registerOtherFuel(plate_fuel_pu238be, pube * ingot, pu238 * nugget, false); + registerOtherFuel(plate_fuel_ra226be, rabe * billet, po210 * nugget * 3, false); + registerOtherFuel(plate_fuel_pu238be, pube * billet, pu238 * nugget, false); registerOtherWaste(waste_plate_u233, u233 * ingot * 100); registerOtherWaste(waste_plate_u235, u235 * ingot * 100); @@ -322,6 +322,7 @@ public class HazardRegistry { registerRTGPellet(pellet_rtg_radium, ra226 * rtg, 0); registerRTGPellet(pellet_rtg_weak, (pu238 + (u238 * 2)) * billet, 0); registerRTGPellet(pellet_rtg_strontium, sr90 * rtg, 0); + registerRTGPellet(pellet_rtg_cobalt, co60 * rtg, 0); registerRTGPellet(pellet_rtg_actinium, ac227 * rtg, 0); registerRTGPellet(pellet_rtg_polonium, po210 * rtg, 0, 3F); registerRTGPellet(pellet_rtg_lead, pb209 * rtg, 0, 7F, 5F); @@ -331,10 +332,13 @@ public class HazardRegistry { registerBreedingRodRadiation(BreedingRodType.TRITIUM, 0.001F); registerBreedingRodRadiation(BreedingRodType.CO60, co60); + registerBreedingRodRadiation(BreedingRodType.RA226, ra226); + registerBreedingRodRadiation(BreedingRodType.AC227, ac227); registerBreedingRodRadiation(BreedingRodType.TH232, th232); registerBreedingRodRadiation(BreedingRodType.THF, thf); registerBreedingRodRadiation(BreedingRodType.U235, u235); registerBreedingRodRadiation(BreedingRodType.NP237, np237); + registerBreedingRodRadiation(BreedingRodType.U238, u238); registerBreedingRodRadiation(BreedingRodType.PU238, pu238); //it's in a container :) registerBreedingRodRadiation(BreedingRodType.PU239, pu239); registerBreedingRodRadiation(BreedingRodType.RGP, purg); diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeHot.java b/src/main/java/com/hbm/hazard/type/HazardTypeHot.java index c603bf8f2..b47a39b98 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeHot.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeHot.java @@ -24,6 +24,7 @@ public class HazardTypeHot extends HazardTypeBase { boolean reacher = false; boolean gloves = false; + //Why on earth did I add gloves again? if(target instanceof EntityPlayer) { ItemStack item = ((EntityPlayer) target).inventory.getCurrentItem(); if(item != null) @@ -34,7 +35,8 @@ public class HazardTypeHot extends HazardTypeBase { gloves = armor.getItem() instanceof ItemModGloves || ArmorUtil.checkForHazmat(target); if(!gloves) { ItemStack mod = ArmorModHandler.pryMods(armor)[ArmorModHandler.legs_only]; - gloves = mod.getItem() instanceof ItemModGloves; + if(mod != null) + gloves = mod.getItem() instanceof ItemModGloves; } } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerRadiolysis.java b/src/main/java/com/hbm/inventory/container/ContainerRadiolysis.java new file mode 100644 index 000000000..d3fe7e708 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerRadiolysis.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.machine.TileEntityMachineRadiolysis; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerRadiolysis extends Container { + + private TileEntityMachineRadiolysis radiolysis; + + public ContainerRadiolysis(InventoryPlayer playerInv, TileEntityMachineRadiolysis tile) { + radiolysis = tile; + + //RTG + for(byte i = 0; i < 2; i++) { + for(byte j = 0; j < 5; j++) { + this.addSlotToContainer(new Slot(tile, j + i * 5, 188 + i * 18, 8 + j * 18)); + } + } + + //Fluid IO + this.addSlotToContainer(new Slot(tile, 10, 34, 17)); + this.addSlotToContainer(new SlotMachineOutput(tile, 11, 34, 53)); + + //Sterilization + this.addSlotToContainer(new Slot(tile, 12, 148, 17)); + this.addSlotToContainer(new SlotMachineOutput(tile, 13, 148, 53)); + + //Battery + this.addSlotToContainer(new Slot(tile, 14, 8, 53)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 142)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return radiolysis.isUseableByPlayer(player); + } + + /** my eye, my eye, coctor coctor coctor **/ + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + var3 = stack.copy(); + + if(index <= 14) { + if(!this.mergeItemStack(stack, 15, this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(stack, 0, 15, false)) { + return null; + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java b/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java index 4f82aec44..99365242e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java +++ b/src/main/java/com/hbm/inventory/container/ContainerReactorZirnox.java @@ -79,11 +79,11 @@ public class ContainerReactorZirnox extends Container { } else { if(FluidContainerRegistry.getFluidContent(stack, Fluids.CARBONDIOXIDE) > 0) { - if(!this.mergeItemStack(stack, 24, 25, true)) + if(!this.mergeItemStack(stack, 24, 26, false)) return null; } else if(FluidContainerRegistry.getFluidContent(stack, Fluids.WATER) > 0) { - if(!this.mergeItemStack(stack, 25, 26, true)) + if(!this.mergeItemStack(stack, 26, 28, false)) return null; } else { diff --git a/src/main/java/com/hbm/inventory/container/ContainerSILEX.java b/src/main/java/com/hbm/inventory/container/ContainerSILEX.java index dc8369d82..d754fdc98 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSILEX.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSILEX.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotMachineOutput; import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntitySILEX; @@ -24,14 +25,14 @@ public class ContainerSILEX extends Container { this.addSlotToContainer(new Slot(te, 2, 8 + 18, 24)); this.addSlotToContainer(new Slot(te, 3, 8 + 18*2, 24)); //Output - this.addSlotToContainer(new Slot(te, 4, 116, 90)); + this.addSlotToContainer(new SlotMachineOutput(te, 4, 116, 90)); //Output Queue - this.addSlotToContainer(new Slot(te, 5, 134, 72)); - this.addSlotToContainer(new Slot(te, 6, 152, 72)); - this.addSlotToContainer(new Slot(te, 7, 134, 90)); - this.addSlotToContainer(new Slot(te, 8, 152, 90)); - this.addSlotToContainer(new Slot(te, 9, 134, 108)); - this.addSlotToContainer(new Slot(te, 10, 152, 108)); + this.addSlotToContainer(new SlotMachineOutput(te, 5, 134, 72)); + this.addSlotToContainer(new SlotMachineOutput(te, 6, 152, 72)); + this.addSlotToContainer(new SlotMachineOutput(te, 7, 134, 90)); + this.addSlotToContainer(new SlotMachineOutput(te, 8, 152, 90)); + this.addSlotToContainer(new SlotMachineOutput(te, 9, 134, 108)); + this.addSlotToContainer(new SlotMachineOutput(te, 10, 152, 108)); for(int i = 0; i < 3; i++) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineGasCent.java b/src/main/java/com/hbm/inventory/gui/GUIMachineGasCent.java index 94ad38dc8..ea66e3242 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineGasCent.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineGasCent.java @@ -60,22 +60,31 @@ public class GUIMachineGasCent extends GuiInfoContainer { int j = (int)gasCent.getCentrifugeProgressScaled(33); drawTexturedModalRect(guiLeft + 74, guiTop + 37, 208, 0, j, 12); - int a = gasCent.getTankScaled(32, 0); + int a = gasCent.getTankScaled(31, 0); switch (gasCent.inputTank.getTankType()) { case PF6: drawTexturedModalRect(guiLeft + 58, guiTop + 62 - a, 200, 31 - a, 8, a); break; + case MUD: + drawTexturedModalRect(guiLeft + 58, guiTop + 62 - a, 192, 63 - a, 8, a); + break; + case MUD_HEAVY: + drawTexturedModalRect(guiLeft + 58, guiTop + 62 - a, 192, 63 - a, 8, a); + break; case NONE: break; default: drawTexturedModalRect(guiLeft + 58, guiTop + 62 - a, 192, 31 - a, 8, a); } - int b = gasCent.getTankScaled(32, 1); + int b = gasCent.getTankScaled(31, 1); switch (gasCent.outputTank.getTankType()) { case PF6: drawTexturedModalRect(guiLeft + 114, guiTop + 62 - b, 200, 31 - b, 8, b); break; + case MUD_HEAVY: + drawTexturedModalRect(guiLeft + 114, guiTop + 62 - b, 192, 63 - b, 8, b); + break; case NONE: break; default: diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRTG.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRTG.java index 7ac329f62..2dc166fa4 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRTG.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRTG.java @@ -43,7 +43,7 @@ public class GUIMachineRTG extends GuiInfoContainer { for(int i = 0; i < pellets.size(); i++) { ItemRTGPellet pellet = pellets.get(i); - pelletText[i + 1] = I18nUtil.resolveKey("desc.gui.rtg.pelletPower", I18nUtil.resolveKey(pellet.getUnlocalizedName() + ".name"), pellet.getHeat() * 10); + pelletText[i + 1] = I18nUtil.resolveKey("desc.gui.rtg.pelletPower", I18nUtil.resolveKey(pellet.getUnlocalizedName() + ".name"), pellet.getHeat() * 5); } this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, pelletText); diff --git a/src/main/java/com/hbm/inventory/gui/GUIRadiolysis.java b/src/main/java/com/hbm/inventory/gui/GUIRadiolysis.java new file mode 100644 index 000000000..36a6f87b7 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRadiolysis.java @@ -0,0 +1,91 @@ +package com.hbm.inventory.gui; + +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerRadiolysis; +import com.hbm.items.machine.ItemRTGPellet; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineRadiolysis; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIRadiolysis extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_radiolysis.png"); + private TileEntityMachineRadiolysis radiolysis; + + public GUIRadiolysis(InventoryPlayer invPlayer, TileEntityMachineRadiolysis tedf) { + super(new ContainerRadiolysis(invPlayer, tedf)); + radiolysis = tedf; + + this.xSize = 230; + this.ySize = 166; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + radiolysis.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 61, guiTop + 17, 8, 52); + radiolysis.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 87, guiTop + 17, 12, 16); + radiolysis.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 87, guiTop + 53, 12, 16); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 17, 16, 34, radiolysis.power, radiolysis.maxPower); + + String[] descText = I18nUtil.resolveKeyArray("desc.gui.radiolysis.desc"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, descText); + + String[] heatText = I18nUtil.resolveKeyArray("desc.gui.rtg.heat", radiolysis.heat); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 16 + 18, 16, 16, guiLeft - 8, guiTop + 36 + 18 + 16, heatText); + + List pellets = ItemRTGPellet.pelletList; + String[] pelletText = new String[pellets.size() + 1]; + pelletText[0] = I18nUtil.resolveKey("desc.gui.rtg.pellets"); + + for(int i = 0; i < pellets.size(); i++) { + ItemRTGPellet pellet = pellets.get(i); + pelletText[i + 1] = I18nUtil.resolveKey("desc.gui.rtg.pelletPower", I18nUtil.resolveKey(pellet.getUnlocalizedName() + ".name"), pellet.getHeat() * 10); + } + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 16 + 36, 16, 16, guiLeft - 8, guiTop + 36 + 36 + 16, pelletText); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + + String name = this.radiolysis.hasCustomInventoryName() ? this.radiolysis.getInventoryName() : I18n.format(this.radiolysis.getInventoryName()); + + this.fontRendererObj.drawString(name, 88 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = (int)(radiolysis.getPower() * 34 / radiolysis.getMaxPower()); + drawTexturedModalRect(guiLeft + 8, guiTop + 51 - i, 240, 34 - i, 16, i); + + Minecraft.getMinecraft().getTextureManager().bindTexture(radiolysis.tanks[0].getSheet()); + radiolysis.tanks[0].renderTank(this, guiLeft + 61, guiTop + 69, radiolysis.tanks[0].getTankType().textureX() * FluidTank.x, radiolysis.tanks[0].getTankType().textureY() * FluidTank.y, 8, 52); + + //For some reason, liquid hydrogen appears as lava. but it doesn't seem to be an issue with any other fuel? + for(byte j = 0; j < 2; j++) { + Minecraft.getMinecraft().getTextureManager().bindTexture(radiolysis.tanks[j].getSheet()); + radiolysis.tanks[j + 1].renderTank(this, guiLeft + 87, guiTop + 33 + j * 36, radiolysis.tanks[j + 1].getTankType().textureX() * FluidTank.x, radiolysis.tanks[j + 1].getTankType().textureY() * FluidTank.y, 12, 16); + } + + this.drawInfoPanel(guiLeft - 16, guiTop + 16, 16, 16, 10); + this.drawInfoPanel(guiLeft - 16, guiTop + 16 + 18, 16, 16, 2); + this.drawInfoPanel(guiLeft - 16, guiTop + 16 + 36, 16, 16, 3); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java b/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java index ab3aaa5b8..56393d796 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java @@ -71,7 +71,7 @@ public class GUIReactorResearch extends GuiInfoContainer { "This reactor is fueled with plate fuel.", "The reaction needs a neutron source to start." }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 14, guiTop + 31, 16, 16, guiLeft - 6, guiTop + 31 + 16, text2); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 14, guiTop + 61, 16, 16, guiLeft - 6, guiTop + 61 + 16, text2); } @Override @@ -145,7 +145,7 @@ public class GUIReactorResearch extends GuiInfoContainer { } this.drawInfoPanel(guiLeft - 14, guiTop + 23, 16, 16, 3); - this.drawInfoPanel(guiLeft - 14, guiTop + 31, 16, 16, 2); + this.drawInfoPanel(guiLeft - 14, guiTop + 61, 16, 16, 2); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java b/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java index babeb11ed..dc0f5267d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityReactorZirnox; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -36,23 +37,23 @@ public class GUIReactorZirnox extends GuiInfoContainer { zirnox.steam.renderTankInfo(this, mouseX, mouseY, guiLeft + 160, guiTop + 108, 18, 12); zirnox.carbonDioxide.renderTankInfo(this, mouseX, mouseY, guiLeft + 142, guiTop + 108, 18, 12); zirnox.water.renderTankInfo(this, mouseX, mouseY, guiLeft + 178, guiTop + 108, 18, 12); - this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 160, guiTop + 33, 18, 17, new String[] { "Temperature:", " " + Math.round((zirnox.heat) * 0.00001 * 480 + 20) + "°C" }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 160, guiTop + 33, 18, 17, new String[] { "Temperature:", " " + Math.round((zirnox.heat) * 0.00001 * 780 + 20) + "°C" }); this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 178, guiTop + 33, 18, 17, new String[] { "Pressure:", " " + Math.round((zirnox.pressure) * 0.00001 * 30) + " bar" }); - - String[] info = new String[] { "CO2 transfers heat from the core", "to the water. This will boil", "the water into steam.", "Water Consumption Rate:", "100 mB/t", "2000 mB/s" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, info); - - String[] info2 = new String[] { "Pressure can be reduced by", "reducing the amount of CO2", "in the reactor. Warning:", "this will reduce cooling!" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, info2); + + String[] coolantText = I18nUtil.resolveKeyArray("desc.gui.zirnox.coolant"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, coolantText); + + String[] pressureText = I18nUtil.resolveKeyArray("desc.gui.zirnox.pressure"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, pressureText); if(zirnox.water.getFill() <= 0) { - String[] warn1 = new String[] { "Error: Water is required for", "the reactor to function properly!" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32, 16, 16, guiLeft - 8, guiTop + 36 + 32 + 16, warn1); + String[] warning1 = I18nUtil.resolveKeyArray("desc.gui.zirnox.warning1"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32, 16, 16, guiLeft - 8, guiTop + 36 + 32 + 16, warning1); } if(zirnox.carbonDioxide.getFill() < 4000) { - String[] warn2 = new String[] { "Error: CO2 is required for", "the reactor to function properly!" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 32 + 16, warn2); + String[] warning2 = I18nUtil.resolveKeyArray("desc.gui.zirnox.warning2"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 32 + 16, warning2); } } @@ -123,7 +124,7 @@ public class GUIReactorZirnox extends GuiInfoContainer { this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32, 16, 16, 6); if(zirnox.carbonDioxide.getFill() <= 4000) - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32 + 16, 16, 16, 7); + this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32 + 16, 16, 16, 6); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 7482e56cc..57dbb86de 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -251,7 +251,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.part_carbon, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(COAL.dust(), 1), },50); makeRecipe(new ComparableStack(ModItems.part_copper, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new OreDictStack(CU.dust(), 1), },50); makeRecipe(new ComparableStack(ModItems.part_plutonium, 1), new AStack[] {new ComparableStack(ModItems.plate_polymer, 1), new ComparableStack(ModItems.powder_plutonium, 1), },50); - makeRecipe(new ComparableStack(ModItems.thermo_element, 1), new AStack[] {new OreDictStack(STEEL.plate(), 3), new OreDictStack(IRON.plate(), 1), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.wire_red_copper, 2), new ComparableStack(ModItems.wire_aluminium, 2), new OreDictStack(NETHERQUARTZ.dust(), 4), },150); + makeRecipe(new ComparableStack(ModItems.thermo_element, 1), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(IRON.plate(), 1), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.wire_red_copper, 2), new ComparableStack(ModItems.wire_aluminium, 2), new OreDictStack(NETHERQUARTZ.dust(), 2), },150); makeRecipe(new ComparableStack(ModItems.limiter, 1), new AStack[] {new OreDictStack(STEEL.plate(), 3), new OreDictStack(IRON.plate(), 1), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.wire_copper, 4), },150); makeRecipe(new ComparableStack(ModItems.plate_dalekanium, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), },50); makeRecipe(new ComparableStack(ModBlocks.block_meteor, 1), new AStack[] {new ComparableStack(ModItems.fragment_meteorite, 100), },500); @@ -264,7 +264,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(Blocks.piston, 4), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(MINGRADE.ingot(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.wire_red_copper, 6), },200); makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 5), new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(POLYMER.ingot(), 6), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(POLYMER.ingot(), 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); makeRecipe(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new AStack[] {new OreDictStack(POLYMER.ingot(), 4), new OreDictStack(CO.dust(), 12), new OreDictStack(LI.dust(), 12), new OreDictStack(ALLOY.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },400); makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new ComparableStack(ModItems.wire_schrabidium, 4), },800); @@ -930,6 +930,20 @@ public class AssemblerRecipes { new ComparableStack(ModItems.inf_water_mk2, 2) }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] { + new OreDictStack(STEEL.ingot(), 8), + new OreDictStack(TCALLOY.ingot(), 4), + new ComparableStack(ModBlocks.steel_beam, 16), + new OreDictStack(DURA.ingot(), 10), + new OreDictStack(DESH.ingot(), 4), + new OreDictStack(PB.plate(), 12), + new ComparableStack(ModItems.board_copper, 4), + new ComparableStack(ModItems.thermo_element, 10), + new ComparableStack(ModItems.circuit_copper, 3), + new ComparableStack(ModItems.wire_red_copper, 8), + new ComparableStack(ModItems.tank_steel, 3) + }, 200); + if(Loader.isModLoaded("Mekanism")) { Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); diff --git a/src/main/java/com/hbm/inventory/recipes/FusionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FusionRecipes.java index 7f72baf6e..e32ea7ee2 100644 --- a/src/main/java/com/hbm/inventory/recipes/FusionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FusionRecipes.java @@ -28,12 +28,12 @@ public class FusionRecipes { public static HashMap levels = new HashMap(); static { - levels.put(Fluids.PLASMA_DT, 1); - levels.put(Fluids.PLASMA_DH3, 2); - levels.put(Fluids.PLASMA_HD, 1); - levels.put(Fluids.PLASMA_HT, 1); - levels.put(Fluids.PLASMA_XM, 3); - levels.put(Fluids.PLASMA_BF, 4); + levels.put(Fluids.PLASMA_DT, 1000); + levels.put(Fluids.PLASMA_DH3, 2000); + levels.put(Fluids.PLASMA_HD, 1000); + levels.put(Fluids.PLASMA_HT, 1000); + levels.put(Fluids.PLASMA_XM, 3000); + levels.put(Fluids.PLASMA_BF, 4000); } public static int getBreedingLevel(FluidType plasma) { diff --git a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java index f7b354184..84d7ed95c 100644 --- a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java @@ -2,13 +2,17 @@ package com.hbm.inventory.recipes; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.util.Tuple.Pair; import net.minecraft.item.ItemStack; @@ -68,57 +72,37 @@ public class GasCentrifugeRecipes { } }; - - //Recipes for NEI - public static List getGasCentOutputs(FluidType fluid) { - List outputs = new ArrayList(4); - if(fluid == Fluids.UF6) { - outputs.add(new ItemStack(ModItems.nugget_u238, 11)); - outputs.add(new ItemStack(ModItems.nugget_u235, 1)); - outputs.add(new ItemStack(ModItems.fluorite, 4)); - } else if(fluid == Fluids.PUF6) { - outputs.add(new ItemStack(ModItems.nugget_pu238, 3)); - outputs.add(new ItemStack(ModItems.nugget_pu_mix, 6)); - outputs.add(new ItemStack(ModItems.fluorite, 3)); - } else if(fluid == Fluids.WATZ) { - outputs.add(new ItemStack(ModItems.powder_iron, 1)); - outputs.add(new ItemStack(ModItems.powder_lead, 1)); - outputs.add(new ItemStack(ModItems.nuclear_waste_tiny, 1)); //we have to omit dust here because the NEI handler only supports 3 items - } - return outputs; - } - - public static int getQuantityRequired(FluidType fluid) { - if(fluid == Fluids.UF6) return 1200; - if(fluid == Fluids.PUF6)return 900; - if(fluid == Fluids.WATZ)return 1000; - return 0; - } + /* Recipe NEI Handler */ + private static Map gasCent = new HashMap(); + //Iterators are lots of fun public static Map getGasCentrifugeRecipes() { Map recipes = new HashMap(); - - for(int i = 0; i < Fluids.getAll().length; i++) { - if(getGasCentOutputs(Fluids.fromID(i)) != null) { - List out = getGasCentOutputs(Fluids.fromID(i)); - ItemStack[] outputs = new ItemStack[4]; - - for(int j = 0; j < out.size(); j++) { - outputs[j] = out.get(j).copy(); - } - for(int j = 0; j < 4; j++) - if(outputs[j] == null) - outputs[j] = new ItemStack(ModItems.nothing); - - ItemStack input = new ItemStack(ModItems.fluid_icon, 1, i); - ItemFluidIcon.addQuantity(input, getQuantityRequired(Fluids.fromID(i))); - - recipes.put(input, outputs); + Iterator itr = gasCent.entrySet().iterator(); + + while(itr.hasNext()) { + Map.Entry entry = (Entry) itr.next(); + FluidStack input = (FluidStack) entry.getKey(); + ItemStack[] out = new ItemStack[4]; + ItemStack[] outputs = (ItemStack[]) entry.getValue(); + + for(int j = 0; j < outputs.length; j++) { + out[j] = outputs[j].copy(); } + for(int j = 0; j < 4; j++) + if(out[j] == null) + out[j] = new ItemStack(ModItems.nothing); + + recipes.put(ItemFluidIcon.make(input.type, input.fill), outputs); } return recipes; } + public static void register() { + gasCent.put(new FluidStack(1200, Fluids.UF6), new ItemStack[] {new ItemStack(ModItems.nugget_u238, 11), new ItemStack(ModItems.nugget_u235, 1), new ItemStack(ModItems.fluorite, 4)}); + gasCent.put(new FluidStack(900, Fluids.PUF6), new ItemStack[] {new ItemStack(ModItems.nugget_pu238, 3), new ItemStack(ModItems.nugget_pu_mix, 6), new ItemStack(ModItems.fluorite, 3)}); + gasCent.put(new FluidStack(1000, Fluids.WATZ), new ItemStack[] {new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.nuclear_waste_tiny, 1)}); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java b/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java new file mode 100644 index 000000000..1a8614f38 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/RadiolysisRecipes.java @@ -0,0 +1,64 @@ +package com.hbm.inventory.recipes; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; + +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.RefineryRecipes; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.util.Tuple.Pair; + +import net.minecraft.item.ItemStack; + +public class RadiolysisRecipes { + //All cracking recipes, + 2H2O => H2O2 + H2, + heavy oil => light oil + waste product, and others i haven't even thought of yet + + private static Map> radiolysis = new HashMap(); //fluidstacks :reimumunch: + + /* I am proud of this */ + public static Map getRecipesForNEI() { + Map recipes = new HashMap(); + Iterator itr = radiolysis.entrySet().iterator(); + + while(itr.hasNext()) { + Map.Entry entry = (Entry) itr.next(); + Pair pair = (Pair) entry.getValue(); + ItemStack[] outputs = new ItemStack[2]; + if(pair.getKey().type == Fluids.NONE) { + outputs[0] = new ItemStack(ModItems.nothing); + } else { + outputs[0] = ItemFluidIcon.make(pair.getKey().type, pair.getKey().fill); + } + if(pair.getValue().type == Fluids.NONE) { + outputs[1] = new ItemStack(ModItems.nothing); + } else { + outputs[1] = ItemFluidIcon.make(pair.getValue().type, pair.getValue().fill); + } + + recipes.put(ItemFluidIcon.make((FluidType) entry.getKey(), 100), outputs); + } + + return recipes; + } + + public static void registerRadiolysis() { + radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.ACID), new FluidStack(20, Fluids.HYDROGEN))); + + //now this is poggers + radiolysis.put(Fluids.OIL, new Pair(new FluidStack(RefineryRecipes.oil_crack_oil, Fluids.CRACKOIL), new FluidStack(RefineryRecipes.oil_crack_petro, Fluids.PETROLEUM))); + radiolysis.put(Fluids.BITUMEN, new Pair(new FluidStack(RefineryRecipes.bitumen_crack_oil, Fluids.OIL), new FluidStack(RefineryRecipes.bitumen_crack_aroma, Fluids.AROMATICS))); + radiolysis.put(Fluids.SMEAR, new Pair(new FluidStack(RefineryRecipes.smear_crack_napht, Fluids.NAPHTHA), new FluidStack(RefineryRecipes.smear_crack_petro, Fluids.PETROLEUM))); + radiolysis.put(Fluids.GAS, new Pair(new FluidStack(RefineryRecipes.gas_crack_petro, Fluids.PETROLEUM), new FluidStack(RefineryRecipes.gas_crack_unsat, Fluids.UNSATURATEDS))); + radiolysis.put(Fluids.DIESEL, new Pair(new FluidStack(RefineryRecipes.diesel_crack_kero, Fluids.KEROSENE), new FluidStack(RefineryRecipes.diesel_crack_petro, Fluids.PETROLEUM))); + radiolysis.put(Fluids.KEROSENE, new Pair(new FluidStack(RefineryRecipes.kero_crack_petro, Fluids.PETROLEUM), new FluidStack(0, Fluids.NONE))); + } + + public static Pair getRadiolysis(FluidType input) { + return radiolysis.get(input); + } +} 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 dfbb1aa4c..cf49930bc 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -19,6 +19,8 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; + public class AnvilRecipes { @@ -596,18 +598,6 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModBlocks.crate_steel, 2)) }).setTier(4)); - //RTG - constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.BISMUTH.ordinal())), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_bismuth, 3)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) }).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.LEAD.ordinal())), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.ingot_lead, 2)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) }).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.MERCURY.ordinal())), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.ingot_mercury, 2)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) }).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.NEPTUNIUM.ordinal())), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_neptunium, 3)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) }).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.ZIRCONIUM.ordinal())), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.billet_zirconium, 3)), new AnvilOutput(new ItemStack(ModItems.plate_iron, 1)) }).setTier(3)); - if(!GeneralConfig.enable528) { constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index e033a0096..b44461330 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -732,16 +732,17 @@ public class ModItems { public static Item pellet_rtg_depleted; - public static Item pellet_rtg; public static Item pellet_rtg_radium; public static Item pellet_rtg_weak; - public static Item pellet_rtg_polonium; - public static Item pellet_rtg_actinium; + public static Item pellet_rtg; public static Item pellet_rtg_strontium; - public static Item pellet_rtg_lead; - public static Item pellet_rtg_gold; + public static Item pellet_rtg_cobalt; + public static Item pellet_rtg_actinium; + public static Item pellet_rtg_polonium; public static Item pellet_rtg_americium; public static Item pellet_rtg_berkelium; + public static Item pellet_rtg_gold; + public static Item pellet_rtg_lead; public static Item tritium_deuterium_cake; @@ -2641,7 +2642,7 @@ public class ModItems { billet_pb209 = new Item().setUnlocalizedName("billet_pb209").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_pb209"); billet_ra226 = new Item().setUnlocalizedName("billet_ra226").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_ra226"); billet_actinium = new Item().setUnlocalizedName("billet_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_actinium"); - billet_schrabidium = new Item().setUnlocalizedName("billet_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_schrabidium"); + billet_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("billet_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_schrabidium"); billet_solinium = new Item().setUnlocalizedName("billet_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_solinium"); billet_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("billet_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_gh336"); billet_australium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("billet_australium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":billet_australium"); @@ -3104,18 +3105,19 @@ public class ModItems { wiring_red_copper = new ItemWiring().setUnlocalizedName("wiring_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wiring_red_copper"); - pellet_rtg_depleted = new ItemRTGPelletDepleted().setUnlocalizedName("pellet_rtg_depleted").setCreativeTab(MainRegistry.controlTab); //TODO: add localization; uncrafting recipes; make radiation scale with depletion for rtgs + pellet_rtg_depleted = new ItemRTGPelletDepleted().setContainerItem(plate_iron).setUnlocalizedName("pellet_rtg_depleted").setCreativeTab(MainRegistry.controlTab); - pellet_rtg = new ItemRTGPellet(10).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(87.7F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg"); pellet_rtg_radium = new ItemRTGPellet(3).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(16.0F, HalfLifeType.LONG, false) * 1.5)).setUnlocalizedName("pellet_rtg_radium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_radium"); pellet_rtg_weak = new ItemRTGPellet(5).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(1.0F, HalfLifeType.LONG, false) * 1.5)).setUnlocalizedName("pellet_rtg_weak").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_weak"); - pellet_rtg_polonium = new ItemRTGPellet(50).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(138.0F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_polonium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_polonium"); - pellet_rtg_actinium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(21.7F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_actinium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_actinium"); + pellet_rtg = new ItemRTGPellet(10).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(87.7F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg"); pellet_rtg_strontium = new ItemRTGPellet(15).setDecays(DepletedRTGMaterial.ZIRCONIUM, (long) (RTGUtil.getLifespan(29.0F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_strontium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_strontium"); - pellet_rtg_lead = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 600 : 200).setDecays(DepletedRTGMaterial.BISMUTH, (long) (RTGUtil.getLifespan(0.3F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_lead").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_lead"); - pellet_rtg_gold = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 300 : 100).setDecays(DepletedRTGMaterial.MERCURY, (long) (RTGUtil.getLifespan(2.7F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold"); + pellet_rtg_cobalt = new ItemRTGPellet(15).setDecays(DepletedRTGMaterial.NICKEL, (long) (RTGUtil.getLifespan(29.0F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_cobalt").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_cobalt"); + pellet_rtg_actinium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(5.3F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_actinium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_actinium"); pellet_rtg_americium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.NEPTUNIUM, (long) (RTGUtil.getLifespan(4.7F, HalfLifeType.LONG, false) * 1.5)).setUnlocalizedName("pellet_rtg_americium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_americium"); pellet_rtg_berkelium = new ItemRTGPellet(20).setUnlocalizedName("pellet_rtg_berkelium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_berkelium"); + pellet_rtg_polonium = new ItemRTGPellet(50).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(138.0F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_polonium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_polonium"); + pellet_rtg_gold = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 200 : 100).setDecays(DepletedRTGMaterial.MERCURY, (long) (RTGUtil.getLifespan(2.7F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold"); + pellet_rtg_lead = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 600 : 200).setDecays(DepletedRTGMaterial.BISMUTH, (long) (RTGUtil.getLifespan(0.3F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_lead").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_lead"); tritium_deuterium_cake = new ItemCustomLore().setUnlocalizedName("tritium_deuterium_cake").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":tritium_deuterium_cake"); @@ -6168,16 +6170,17 @@ public class ModItems { GameRegistry.registerItem(flame_opinion, flame_opinion.getUnlocalizedName()); //Pellets - GameRegistry.registerItem(pellet_rtg, pellet_rtg.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_radium, pellet_rtg_radium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_weak, pellet_rtg_weak.getUnlocalizedName()); - GameRegistry.registerItem(pellet_rtg_polonium, pellet_rtg_polonium.getUnlocalizedName()); + GameRegistry.registerItem(pellet_rtg, pellet_rtg.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_strontium, pellet_rtg_strontium.getUnlocalizedName()); + GameRegistry.registerItem(pellet_rtg_cobalt, pellet_rtg_cobalt.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_actinium, pellet_rtg_actinium.getUnlocalizedName()); - GameRegistry.registerItem(pellet_rtg_lead, pellet_rtg_lead.getUnlocalizedName()); - GameRegistry.registerItem(pellet_rtg_gold, pellet_rtg_gold.getUnlocalizedName()); + GameRegistry.registerItem(pellet_rtg_polonium, pellet_rtg_polonium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_americium, pellet_rtg_americium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_berkelium, pellet_rtg_berkelium.getUnlocalizedName()); + GameRegistry.registerItem(pellet_rtg_gold, pellet_rtg_gold.getUnlocalizedName()); + GameRegistry.registerItem(pellet_rtg_lead, pellet_rtg_lead.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_depleted, pellet_rtg_depleted.getUnlocalizedName()); GameRegistry.registerItem(tritium_deuterium_cake, tritium_deuterium_cake.getUnlocalizedName()); GameRegistry.registerItem(pellet_cluster, pellet_cluster.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemRTGPelletDepleted.java b/src/main/java/com/hbm/items/machine/ItemRTGPelletDepleted.java index f6d932e70..f560f400a 100644 --- a/src/main/java/com/hbm/items/machine/ItemRTGPelletDepleted.java +++ b/src/main/java/com/hbm/items/machine/ItemRTGPelletDepleted.java @@ -13,6 +13,7 @@ public class ItemRTGPelletDepleted extends ItemEnumMulti { MERCURY, NEPTUNIUM, LEAD, - ZIRCONIUM; + ZIRCONIUM, + NICKEL; } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 1c3eb9ce7..e280443a2 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -205,6 +205,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticCracker.class, new RenderCatalyticCracker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLiquefactor.class, new RenderLiquefactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolidifier.class, new RenderSolidifier()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadiolysis.class, new RenderRadiolysis()); //AMS ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSBase.class, new RenderAMSBase()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSEmitter.class, new RenderAMSEmitter()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 4637d8733..6d0b5bc7d 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -949,6 +949,8 @@ public class MainRegistry { PressRecipes.register(); RefineryRecipes.registerFractions(); RefineryRecipes.registerCracking(); + RadiolysisRecipes.registerRadiolysis(); + GasCentrifugeRecipes.register(); LiquefactionRecipes.register(); SolidificationRecipes.register(); FuelPoolRecipes.register(); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 1544b462d..a3273aac9 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -57,6 +57,8 @@ public class NEIConfig implements IConfigureNEI { API.registerUsageHandler(new AnvilRecipeHandler()); API.registerRecipeHandler(new FuelPoolHandler()); API.registerUsageHandler(new FuelPoolHandler()); + API.registerRecipeHandler(new RadiolysisRecipeHandler()); + API.registerUsageHandler(new RadiolysisRecipeHandler()); //universal boyes API.registerRecipeHandler(new ZirnoxRecipeHandler()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index f22019103..62e6fe0b1 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -279,6 +279,9 @@ public class ResourceManager { public static final IModelCustom pylon_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_large.obj")); public static final IModelCustom substation = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/substation.obj")); + //Radiolysis + public static final IModelCustom radiolysis = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radiolysis.obj")); + ////Textures TEs public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); @@ -577,7 +580,8 @@ public class ResourceManager { public static final ResourceLocation pylon_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_large.png"); public static final ResourceLocation substation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/substation.png"); - + //Radiolysis + public static final ResourceLocation radiolysis_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radiolysis.png"); ////Obj Items diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index e621458df..79f1a3093 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -1205,6 +1205,17 @@ public class ItemRenderLibrary { bindTexture(ResourceManager.solidifier_tex); ResourceManager.solidifier.renderPart("Main"); GL11.glShadeModel(GL11.GL_FLAT); }}); + + renderers.put(Item.getItemFromBlock(ModBlocks.machine_radiolysis), new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.radiolysis_tex); ResourceManager.radiolysis.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}); } private static void bindTexture(ResourceLocation res) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderRadiolysis.java b/src/main/java/com/hbm/render/tileentity/RenderRadiolysis.java new file mode 100644 index 000000000..3cc1bf524 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRadiolysis.java @@ -0,0 +1,40 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderRadiolysis extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(0, 0F, 1F, 0F); break; + case 4: + GL11.glRotatef(90, 0F, 1F, 0F); break; + case 5: + GL11.glRotatef(270, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.radiolysis_tex); + ResourceManager.radiolysis.renderAll(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 234430f28..8d3e33da7 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -185,7 +185,7 @@ public class TileMappings { put(TileEntityWatz.class, "tileentity_watz"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); - + put(TileEntityLoot.class, "tileentity_ntm_loot"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); @@ -231,6 +231,7 @@ public class TileMappings { private static void putMachines() { put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); + put(TileEntityMachineRadiolysis.class, "tileentity_radiolysis"); put(TileEntityUVLamp.class, "tileentity_uv_lamp"); put(TileEntityCondenser.class, "tileentity_condenser"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index cf4dd9187..879af660c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -192,10 +192,10 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser BreederRecipe out = BreederRecipes.getOutput(slots[1]); if(slots[1] != null && slots[1].getItem() == ModItems.meteorite_sword_irradiated) - out = new BreederRecipe(ModItems.meteorite_sword_fused, 1); + out = new BreederRecipe(ModItems.meteorite_sword_fused, 1000); if(slots[1] != null && slots[1].getItem() == ModItems.meteorite_sword_fused) - out = new BreederRecipe(ModItems.meteorite_sword_baleful, 4); + out = new BreederRecipe(ModItems.meteorite_sword_baleful, 4000); if(out == null) { this.progress = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index 268b1a992..205175ae4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -7,6 +7,7 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; +import com.hbm.interfaces.Spaghetti; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -36,6 +37,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; +@Spaghetti("I still can't believe this was my idea of a 'rework'") public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyUser, IFluidContainer, IFluidAcceptor { public byte age; @@ -226,7 +228,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I power = Library.chargeTEFromItems(slots, 0, power, maxPower); setTankType(1); - if(inputTank.getTankType() == PseudoFluidType.PF6 || inputTank.getTankType() == PseudoFluidType.NUF6) { + if(inputTank.getTankType() == PseudoFluidType.PF6 || inputTank.getTankType() == PseudoFluidType.NUF6 || inputTank.getTankType() == PseudoFluidType.MUD) { tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); attemptConversion(); } @@ -334,10 +336,17 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I if(newType == Fluids.UF6) { inputTank.setTankType(PseudoFluidType.NUF6); outputTank.setTankType(PseudoFluidType.NUF6.getOutputFluid()); + return; } if(newType == Fluids.PUF6) { inputTank.setTankType(PseudoFluidType.PF6); outputTank.setTankType(PseudoFluidType.PF6.getOutputFluid()); + return; + } + if(newType == Fluids.WATZ) { + inputTank.setTankType(PseudoFluidType.MUD); + outputTank.setTankType(PseudoFluidType.MUD.getOutputFluid()); + return; } } return; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 37b1c2028..0c8eea22e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -131,7 +131,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement // RTG /// this.hasRTG = RTGUtil.hasHeat(slots, RTGSlots); - this.spin += RTGUtil.updateRTGs(slots, RTGSlots) * 0.1; + this.spin += RTGUtil.updateRTGs(slots, RTGSlots) * 0.2; if(this.spin > 0) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 8b93a37c0..027653669 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -210,7 +210,7 @@ public class TileEntityMachineRTG extends TileEntity implements ISidedInventory, if(heat > heatMax) heat = heatMax; - power += heat * 10; + power += heat * 5; if(power > powerMax) power = powerMax; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java new file mode 100644 index 000000000..099f61581 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -0,0 +1,338 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidContainer; +import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.RadiolysisRecipes; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemRTGPellet; +import com.hbm.items.machine.ItemRTGPelletDepleted; +import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.RTGUtil; +import com.hbm.util.Tuple.Pair; + +import api.hbm.energy.IEnergyGenerator; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, IFluidSource, IFluidContainer { + //TODO: Render file + resource locations + itemrenderlibrary + clientproxy, gui texture, further recipes + + public long power; + public static final int maxPower = 1000000; + public int heat; + + public FluidTank[] tanks; + public List list1 = new ArrayList(); + public List list2 = new ArrayList(); + + private static final int[] slot_io = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13 }; + private static final int[] slot_rtg = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + + public TileEntityMachineRadiolysis() { + super(15); //10 rtg slots, 2 fluid ID slots (io), 2 irradiation slots (io), battery slot + tanks = new FluidTank[3]; + tanks[0] = new FluidTank(Fluids.NONE, 2000, 0); + tanks[1] = new FluidTank(Fluids.NONE, 2000, 1); + tanks[2] = new FluidTank(Fluids.NONE, 2000, 2); + } + + @Override + public String getName() { + return "container.radiolysis"; + } + + /* IO Methods */ + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return i == 12 || (i < 10 && itemStack.getItem() instanceof ItemRTGPellet); + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return slot_io; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return (i < 10 && itemStack.getItem() instanceof ItemRTGPelletDepleted) || i == 13; + } + + /* NBT Methods */ + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.heat = nbt.getInteger("heat"); + + tanks[0].readFromNBT(nbt, "input"); + tanks[1].readFromNBT(nbt, "output1"); + tanks[2].readFromNBT(nbt, "output2"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", power); + nbt.setInteger("heat", heat); + + tanks[0].writeToNBT(nbt, "input"); + tanks[1].writeToNBT(nbt, "output1"); + tanks[2].writeToNBT(nbt, "output2"); + } + + public void networkUnpack(NBTTagCompound data) { + this.power = data.getLong("power"); + this.heat = data.getInteger("heat"); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + power = Library.chargeItemsFromTE(slots, 14, power, maxPower); + + heat = RTGUtil.updateRTGs(slots, slot_rtg); + power += heat * 10; + + if(power > maxPower) + power = maxPower; + + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + this.sendPower(worldObj, xCoord + 2, yCoord, zCoord, dir); + this.sendPower(worldObj, xCoord - 2, yCoord, zCoord, dir); + this.sendPower(worldObj, xCoord, yCoord, zCoord + 2, dir); + this.sendPower(worldObj, xCoord, yCoord, zCoord - 2, dir); + + tanks[0].setType(10, 11, slots); + setupTanks(); + + if(heat > 0) { + if(heat >= 100 && worldObj.getTotalWorldTime() % 30 == 0) + crack(); + + if(heat >= 200 && worldObj.getTotalWorldTime() % 100 == 0) + sterilize(); + } + + if(worldObj.getTotalWorldTime() % 10 == 0) { + fillFluidInit(tanks[1].getTankType()); + fillFluidInit(tanks[2].getTankType()); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("heat", heat); + this.networkPack(data, 50); + + for(byte i = 0; i < 3; i++) + tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + } + } + + /* Processing Methods */ + private void crack() { + + Pair quart = RadiolysisRecipes.getRadiolysis(tanks[0].getTankType()); + + if(quart != null) { + + int left = quart.getKey().fill; + int right = quart.getValue().fill; + + if(tanks[0].getFill() >= 100 && hasSpace(left, right)) { + tanks[0].setFill(tanks[0].getFill() - 100); + tanks[1].setFill(tanks[1].getFill() + left); + tanks[2].setFill(tanks[2].getFill() + right); + } + } + } + + private boolean hasSpace(int left, int right) { + return tanks[1].getFill() + left <= tanks[1].getMaxFill() && tanks[2].getFill() + right <= tanks[2].getMaxFill(); + } + + private void setupTanks() { + + Pair quart = RadiolysisRecipes.getRadiolysis(tanks[0].getTankType()); + + if(quart != null) { + tanks[1].setTankType(quart.getKey().type); + tanks[2].setTankType(quart.getValue().type); + } else { + tanks[0].setTankType(Fluids.NONE); + tanks[1].setTankType(Fluids.NONE); + tanks[2].setTankType(Fluids.NONE); + } + + } + + // Code: pressure, sword, sterilize. + private void sterilize() { + if(slots[12] != null) { + if(slots[12].getItem() instanceof ItemFood && !(slots[12].getItem() == ModItems.pancake)) { + slots[12].stackSize -= 1; + if(slots[12].stackSize <= 0) + slots[12] = null; + } + + if(!checkIfValid()) + return; + + ItemStack output = slots[12].copy(); + output.stackSize = 1; + + if(slots[13] == null) { + slots[12].stackSize -= output.stackSize; + if(slots[12].stackSize <= 0) + slots[12] = null; + slots[13] = output; + slots[13].stackTagCompound.setBoolean("ntmContagion", false); + } else if(slots[13].isItemEqual(output) && slots[13].stackSize + output.stackSize <= slots[13].getMaxStackSize()) { + slots[12].stackSize -= output.stackSize; + if(slots[12].stackSize <= 0) + slots[12] = null; + + slots[13].stackSize += output.stackSize; + slots[13].stackTagCompound.setBoolean("ntmContagion", false); + } + } + } + + private boolean checkIfValid() { + if(slots[12] == null) + return false; + + if(!slots[12].hasTagCompound()) + return false; + + if(!slots[12].getTagCompound().getBoolean("ntmContagion")) + return false; + + return true; + } + + /* Power methods */ + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + /* Fluid Methods */ + @Override + public void setFillstate(int fill, int index) { + if(index < 3 && tanks[index] != null) + tanks[index].setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + for(FluidTank tank : tanks) { + if(tank.getTankType() == type) { + tank.setFill(fill); + } + } + } + + @Override + public void setType(FluidType type, int index) { + this.tanks[index].setTankType(type); + } + + @Override + public List getTanks() { + return Arrays.asList(this.tanks); + } + + @Override + public int getFluidFill(FluidType type) { + for(FluidTank tank : tanks) { + if(tank.getTankType() == type) { + return tank.getFill(); + } + } + return 0; + } + + @Override + public int getMaxFluidFill(FluidType type) { + if(tanks[0].getTankType() == type) { + return tanks[0].getMaxFill(); + } + return 0; + } + + @Override + public void fillFluidInit(FluidType type) { + fillFluid(this.xCoord + 2, this.yCoord, this.zCoord, this.getTact(), type); + fillFluid(this.xCoord - 2, this.yCoord, this.zCoord, this.getTact(), type); + fillFluid(this.xCoord, this.yCoord, this.zCoord + 2, this.getTact(), type); + fillFluid(this.xCoord, this.yCoord, this.zCoord - 2, this.getTact(), type); + } + + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + + @Override + public boolean getTact() { + return worldObj.getTotalWorldTime() % 20 < 10; + } + + @Override + public List getFluidList(FluidType type) { + if(type == tanks[1].getTankType()) + return list1; + if(type == tanks[2].getTankType()) + return list2; + return new ArrayList(); + } + + @Override + public void clearFluidList(FluidType type) { + if(type == tanks[1].getTankType()) + list1.clear(); + if(type == tanks[2].getTankType()) + list2.clear(); + } + + public AxisAlignedBB getRenderBoundingBox() { + return AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord, zCoord - 1, xCoord + 2, yCoord + 3, zCoord + 2); + } + + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 7f5e154b1..d2becbffe 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -203,13 +203,15 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF } } } - - this.pressure = (int) ((float)this.heat * (1.5 * this.carbonDioxide.getFill() / 16000)); + + //2(fill) + ((x^2 * fill%) / 100,000) + this.pressure = (this.carbonDioxide.getFill() * 2) + (int)((float)this.heat * (float)this.heat * ((float)this.carbonDioxide.getFill() / (float)this.carbonDioxide.getMaxFill() / 100000F)); if(this.heat > 0 && this.heat < maxHeat) { if(this.water.getFill() > 0 && this.carbonDioxide.getFill() > 0 && this.steam.getFill() < this.steam.getMaxFill()) { generateSteam(); - this.heat -= (int) ((float)this.heat * (Math.sqrt(this.carbonDioxide.getFill()) / 1800)); + //(x * pressure) / 1,000,000 + this.heat -= (int) ((float)this.heat * (float)this.pressure / 1000000F); } else { this.heat -= 10; } @@ -233,19 +235,20 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF private void generateSteam() { // function of SHS produced per tick - // heat% * 25 * 1 (should get rid of any rounding errors) - int Water = (int) (((float)heat / maxHeat) * 25) * 5; - int Steam = Water * 1; - - water.setFill(water.getFill() - Water); - steam.setFill(steam.getFill() + Steam); - - if(water.getFill() < 0) - water.setFill(0); - - if(steam.getFill() > steam.getMaxFill()) - steam.setFill(steam.getMaxFill()); + // heat - 10256/100000 * pressure / 50,000 * 25 * 3 (should get rid of any rounding errors) + if(this.heat > 10256) { + int Water = (int)((((float)heat - 10256F) / (float)maxHeat) * ((float)pressure / (float)(maxPressure / 2)) * 25F * 3F); + int Steam = Water * 1; + + water.setFill(water.getFill() - Water); + steam.setFill(steam.getFill() + Steam); + + if(water.getFill() < 0) + water.setFill(0); + if(steam.getFill() > steam.getMaxFill()) + steam.setFill(steam.getMaxFill()); + } } private boolean hasFuelRod(int id) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java index 671a35436..4693ed304 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java @@ -170,7 +170,7 @@ public class TileEntityWasteDrum extends TileEntity implements ISidedInventory { if(itemStack.getItem() instanceof ItemRBMKRod) { return ItemRBMKRod.getCoreHeat(itemStack) < 50 && ItemRBMKRod.getHullHeat(itemStack) < 50; } else { - return !FuelPoolRecipes.recipes.containsKey(getStackInSlot(i)); + return !FuelPoolRecipes.recipes.containsKey(new ComparableStack(getStackInSlot(i))); } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e783fa305..ecef32886 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -404,6 +404,7 @@ container.pumpjack=Pumpjack container.radGen=Radiation-Powered Engine container.radar=Radar container.radiobox=FM Transmitter +container.radiolysis=RTG and Radiolysis Chamber container.radiorec=FM Radio container.rbmkBoiler=RBMK Steam Channel container.rbmkControl=RBMK Control Rods @@ -498,11 +499,16 @@ death.attack.teleporter=%1$s was teleported into nothingness. desc.item.rtgDecay=Decays to: %s desc.item.rtgHeat=Power Level: %s desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum +desc.gui.radiolysis.desc=§9Description§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization. desc.gui.rtgBFurnace.desc=Requires at least 15 heat to process$The more heat on top of that, the faster it runs$Heat going over maximum speed will have no effect$Short-lived pellets may decay desc.gui.rtg.heat=§eCurrent heat level: %s desc.gui.rtg.pellets=Accepted Pellets: desc.gui.rtg.pelletHeat=%s (%s heat) desc.gui.rtg.pelletPower=%s (%s HE/tick) +desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. +desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! +desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! +desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! digamma.playerDigamma=Digamma exposure: digamma.playerHealth=Digamma influence: @@ -2285,10 +2291,13 @@ item.pellet_rtg_americium.name=Americium-241 RTG Pellet item.pellet_rtg_americium.desc=Rare and reliable, good old Americium! item.pellet_rtg_berkelium.name=Berkelium RTG Pellet item.pellet_rtg_berkelium.desc= +item.pellet_rtg_cobalt.name=Cobalt-60 RTG Pellet +item.pellet_rtg_cobalt.desc=Not the best as an RTG, but great for gamma radiation! item.pellet_rtg_depleted.bismuth.name=Decayed Bismuth RTG Pellet item.pellet_rtg_depleted.lead.name=Decayed Lead RTG Pellet item.pellet_rtg_depleted.neptunium.name=Decayed Neptunium RTG Pellet item.pellet_rtg_depleted.mercury.name=Decayed Mercury RTG Pellet +item.pellet_rtg_depleted.nickel.name=Decayed Nickel RTG Pellet item.pellet_rtg_depleted.zirconium.name=Decayed Zirconium RTG Pellet item.pellet_rtg_lead.name=Lead-209 RTG Pellet item.pellet_rtg_lead.desc=Exposure will result in immediate death. @@ -3549,6 +3558,7 @@ tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank tile.machine_pumpjack.name=Pumpjack tile.machine_radar.name=Radar tile.machine_radgen.name=Radiation-Powered Engine +tile.machine_radiolysis.name=Radioisotope Thermoelectric Generator and Radiolysis Chamber tile.machine_reactor.name=Breeding Reactor tile.machine_reactor_small.name=Research Reactor tile.machine_refinery.name=Oil Refinery diff --git a/src/main/resources/assets/hbm/models/radiolysis.obj b/src/main/resources/assets/hbm/models/radiolysis.obj new file mode 100644 index 000000000..ce24df0b5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/radiolysis.obj @@ -0,0 +1,2335 @@ +# Blender v2.79 (sub 0) OBJ File: 'radiolyctic cracker.blend1111' +# www.blender.org +mtllib radchamber.mtl +o Cube.001_Cube.002 +v -1.050000 0.269109 0.787500 +v -1.050000 0.269109 -0.787500 +v 1.050000 0.269109 0.787500 +v 1.050000 0.269109 -0.787500 +v 0.386672 1.503445 0.787500 +v -0.356672 1.503445 0.787500 +v -0.356672 1.503445 -0.787500 +v 0.386672 1.503445 -0.787500 +v -0.880480 1.948496 0.787500 +v -1.050000 1.778976 0.787500 +v -1.050000 1.778976 -0.787500 +v -0.880480 1.948496 -0.787500 +v 1.050000 1.778976 0.787500 +v 0.880480 1.948496 0.787500 +v 0.880480 1.948496 -0.787500 +v 1.050000 1.778976 -0.787500 +v -0.500929 1.948496 -0.787500 +v -0.356672 1.804239 -0.787500 +v -0.356672 1.804239 0.787500 +v -0.500929 1.948496 0.787500 +v 0.386672 1.804239 -0.787500 +v 0.530929 1.948496 -0.787500 +v 0.530929 1.948496 0.787500 +v 0.386672 1.804239 0.787500 +v -0.971629 0.264791 -0.695685 +v -1.050000 0.269109 -0.612500 +v -0.971629 0.264791 -0.521764 +v -1.050000 0.269109 -0.437500 +v -0.971629 0.264791 -0.347843 +v -1.050000 0.269109 -0.262500 +v -0.971629 0.264791 -0.173921 +v -1.050000 0.269109 -0.087500 +v -0.971629 0.264791 -0.000000 +v -1.050000 0.269109 0.087500 +v -0.971629 0.264791 0.173921 +v -1.050000 0.269109 0.262500 +v -0.971629 0.264791 0.347843 +v -1.050000 0.269109 0.437500 +v -0.971629 0.264791 0.521764 +v -1.050000 0.269109 0.612500 +v -0.971629 0.264791 0.695685 +v 0.972741 0.266388 0.695685 +v 1.050000 0.269109 0.612500 +v 0.972741 0.266388 0.521764 +v 1.050000 0.269109 0.437500 +v 0.972741 0.266388 0.347843 +v 1.050000 0.269109 0.262500 +v 0.972741 0.266388 0.173921 +v 1.050000 0.269109 0.087500 +v 0.972741 0.266388 0.000000 +v 1.050000 0.269109 -0.087500 +v 0.972741 0.266388 -0.173921 +v 1.050000 0.269109 -0.262500 +v 0.972741 0.266388 -0.347843 +v 1.050000 0.269109 -0.437500 +v 0.972741 0.266388 -0.521764 +v 1.050000 0.269109 -0.612500 +v 0.972741 0.266388 -0.695685 +v -0.329683 1.506311 -0.695685 +v -0.356672 1.503445 -0.612500 +v -0.329683 1.506311 -0.521764 +v -0.356672 1.503445 -0.437500 +v -0.329683 1.506311 -0.347843 +v -0.356672 1.503445 -0.262500 +v -0.329683 1.506311 -0.173921 +v -0.356672 1.503445 -0.087500 +v -0.329683 1.506311 -0.000000 +v -0.356672 1.503445 0.087500 +v -0.329683 1.506311 0.173921 +v -0.356672 1.503445 0.262500 +v -0.329683 1.506311 0.347843 +v -0.356672 1.503445 0.437500 +v -0.329683 1.506311 0.521764 +v -0.356672 1.503445 0.612500 +v -0.329683 1.506311 0.695685 +v 0.358571 1.506311 -0.695685 +v 0.386672 1.503445 -0.612500 +v 0.358571 1.506311 -0.521764 +v 0.386672 1.503445 -0.437500 +v 0.358571 1.506311 -0.347843 +v 0.386672 1.503445 -0.262500 +v 0.358571 1.506311 -0.173921 +v 0.386672 1.503445 -0.087500 +v 0.358571 1.506311 -0.000000 +v 0.386672 1.503445 0.087500 +v 0.358571 1.506311 0.173921 +v 0.386672 1.503445 0.262500 +v 0.358571 1.506311 0.347843 +v 0.386672 1.503445 0.437500 +v 0.358571 1.506311 0.521764 +v 0.386672 1.503445 0.612500 +v 0.358571 1.506311 0.695685 +v -0.814672 1.918380 0.695685 +v -0.880480 1.948496 0.612500 +v -0.814672 1.918380 0.521764 +v -0.880480 1.948496 0.437500 +v -0.814672 1.918380 0.347843 +v -0.880480 1.948496 0.262500 +v -0.814672 1.918380 0.173921 +v -0.880480 1.948496 0.087500 +v -0.814672 1.918380 0.000000 +v -0.880480 1.948496 -0.087500 +v -0.814672 1.918380 -0.173921 +v -0.880480 1.948496 -0.262500 +v -0.814672 1.918380 -0.347843 +v -0.880480 1.948496 -0.437500 +v -0.814672 1.918380 -0.521764 +v -0.880480 1.948496 -0.612500 +v -0.814672 1.918380 -0.695685 +v -0.971629 1.761423 -0.695685 +v -1.050000 1.778976 -0.612500 +v -0.971629 1.761423 -0.521764 +v -1.050000 1.778976 -0.437500 +v -0.971629 1.761423 -0.347843 +v -1.050000 1.778976 -0.262500 +v -0.971629 1.761423 -0.173921 +v -1.050000 1.778976 -0.087500 +v -0.971629 1.761423 -0.000000 +v -1.050000 1.778976 0.087500 +v -0.971629 1.761423 0.173921 +v -1.050000 1.778976 0.262500 +v -0.971629 1.761423 0.347843 +v -1.050000 1.778976 0.437500 +v -0.971629 1.761423 0.521764 +v -1.050000 1.778976 0.612500 +v -0.971629 1.761423 0.695685 +v 0.815784 1.918380 -0.695685 +v 0.880480 1.948496 -0.612500 +v 0.815784 1.918380 -0.521764 +v 0.880480 1.948496 -0.437500 +v 0.815784 1.918380 -0.347843 +v 0.880480 1.948496 -0.262500 +v 0.815784 1.918380 -0.173921 +v 0.880480 1.948496 -0.087500 +v 0.815784 1.918380 -0.000000 +v 0.880480 1.948496 0.087500 +v 0.815784 1.918380 0.173921 +v 0.880480 1.948496 0.262500 +v 0.815784 1.918380 0.347843 +v 0.880480 1.948496 0.437500 +v 0.815784 1.918380 0.521764 +v 0.880480 1.948496 0.612500 +v 0.815784 1.918380 0.695685 +v 0.972741 1.761423 0.695685 +v 1.050000 1.778976 0.612500 +v 0.972741 1.761423 0.521764 +v 1.050000 1.778976 0.437500 +v 0.972741 1.761423 0.347843 +v 1.050000 1.778976 0.262500 +v 0.972741 1.761423 0.173921 +v 1.050000 1.778976 0.087500 +v 0.972741 1.761423 0.000000 +v 1.050000 1.778976 -0.087500 +v 0.972741 1.761423 -0.173921 +v 1.050000 1.778976 -0.262500 +v 0.972741 1.761423 -0.347843 +v 1.050000 1.778976 -0.437500 +v 0.972741 1.761423 -0.521764 +v 1.050000 1.778976 -0.612500 +v 0.972741 1.761423 -0.695685 +v -0.463250 1.918380 -0.695685 +v -0.500929 1.948496 -0.612500 +v -0.463250 1.918380 -0.521764 +v -0.500929 1.948496 -0.437500 +v -0.463250 1.918380 -0.347843 +v -0.500929 1.948496 -0.262500 +v -0.463250 1.918380 -0.173921 +v -0.500929 1.948496 -0.087500 +v -0.463250 1.918380 -0.000000 +v -0.500929 1.948496 0.087500 +v -0.463250 1.918380 0.173921 +v -0.500929 1.948496 0.262500 +v -0.463250 1.918380 0.347843 +v -0.500929 1.948496 0.437500 +v -0.463250 1.918380 0.521764 +v -0.500929 1.948496 0.612500 +v -0.463250 1.918380 0.695685 +v -0.329683 1.784814 0.695685 +v -0.356672 1.804239 0.612500 +v -0.329683 1.784814 0.521764 +v -0.356672 1.804239 0.437500 +v -0.329683 1.784814 0.347843 +v -0.356672 1.804239 0.262500 +v -0.329683 1.784814 0.173921 +v -0.356672 1.804239 0.087500 +v -0.329683 1.784814 0.000000 +v -0.356672 1.804239 -0.087500 +v -0.329683 1.784814 -0.173921 +v -0.356672 1.804239 -0.262500 +v -0.329683 1.784814 -0.347843 +v -0.356672 1.804239 -0.437500 +v -0.329683 1.784814 -0.521764 +v -0.356672 1.804239 -0.612500 +v -0.329683 1.784814 -0.695685 +v 0.358571 1.784814 -0.695685 +v 0.386672 1.804239 -0.612500 +v 0.358571 1.784814 -0.521764 +v 0.386672 1.804239 -0.437500 +v 0.358571 1.784814 -0.347843 +v 0.386672 1.804239 -0.262500 +v 0.358571 1.784814 -0.173921 +v 0.386672 1.804239 -0.087500 +v 0.358571 1.784814 -0.000000 +v 0.386672 1.804239 0.087500 +v 0.358571 1.784814 0.173921 +v 0.386672 1.804239 0.262500 +v 0.358571 1.784814 0.347843 +v 0.386672 1.804239 0.437500 +v 0.358571 1.784814 0.521764 +v 0.386672 1.804239 0.612500 +v 0.358571 1.784814 0.695685 +v 0.492138 1.918380 0.695685 +v 0.530929 1.948496 0.612500 +v 0.492138 1.918380 0.521764 +v 0.530929 1.948496 0.437500 +v 0.492138 1.918380 0.347843 +v 0.530929 1.948496 0.262500 +v 0.492138 1.918380 0.173921 +v 0.530929 1.948496 0.087500 +v 0.492138 1.918380 0.000000 +v 0.530929 1.948496 -0.087500 +v 0.492138 1.918380 -0.173921 +v 0.530929 1.948496 -0.262500 +v 0.492138 1.918380 -0.347843 +v 0.530929 1.948496 -0.437500 +v 0.492138 1.918380 -0.521764 +v 0.530929 1.948496 -0.612500 +v 0.492138 1.918380 -0.695685 +v 0.386672 1.503445 1.051500 +v -0.356672 1.503445 1.051500 +v -1.050000 0.269109 1.051500 +v 1.050000 0.269109 1.051500 +v -0.356672 1.503445 -1.050000 +v 0.386672 1.503445 -1.050000 +v 1.050000 0.269109 -1.050000 +v -1.050000 0.269109 -1.050000 +v 0.000000 1.476425 -0.315458 +v 0.000000 2.037861 -0.228000 +v 0.157729 1.476425 -0.273194 +v 0.114000 2.037861 -0.197454 +v 0.273194 1.476425 -0.157729 +v 0.197454 2.037861 -0.114000 +v 0.315458 1.476425 0.000000 +v 0.228000 2.037861 0.000000 +v 0.273194 1.476425 0.157729 +v 0.197454 2.037861 0.114000 +v 0.157729 1.476425 0.273194 +v 0.114000 2.037861 0.197454 +v 0.000000 1.476425 0.315458 +v 0.000000 2.037861 0.228000 +v -0.157729 1.476425 0.273194 +v -0.114000 2.037861 0.197454 +v -0.273194 1.476425 0.157729 +v -0.197454 2.037861 0.114000 +v -0.315458 1.476425 0.000000 +v -0.228000 2.037861 0.000000 +v -0.273194 1.476425 -0.157729 +v -0.197454 2.037861 -0.114000 +v -0.157729 1.476425 -0.273194 +v -0.114000 2.037861 -0.197454 +v 0.238859 2.037861 -0.413717 +v 0.000000 2.037861 -0.477719 +v 0.413717 2.037861 -0.238860 +v 0.477719 2.037861 -0.000000 +v 0.413717 2.037861 0.238859 +v 0.238860 2.037861 0.413717 +v 0.000000 2.037861 0.477719 +v -0.238859 2.037861 0.413717 +v -0.413717 2.037861 0.238860 +v -0.477719 2.037861 0.000000 +v -0.413717 2.037861 -0.238859 +v -0.238860 2.037861 -0.413717 +v 0.238859 2.236783 -0.413717 +v -0.000000 2.236783 -0.477719 +v 0.413717 2.236783 -0.238860 +v 0.477719 2.236783 -0.000000 +v 0.413717 2.236783 0.238859 +v 0.238860 2.236783 0.413717 +v 0.000000 2.236783 0.477719 +v -0.238859 2.236783 0.413717 +v -0.413717 2.236783 0.238860 +v -0.477719 2.236783 0.000000 +v -0.413717 2.236783 -0.238859 +v -0.238860 2.236783 -0.413717 +v 0.086073 2.236783 -0.149082 +v -0.000000 2.236783 -0.172145 +v 0.149082 2.236783 -0.086073 +v 0.172146 2.236783 0.000000 +v 0.149082 2.236783 0.086073 +v 0.086073 2.236783 0.149082 +v 0.000000 2.236783 0.172146 +v -0.086073 2.236783 0.149082 +v -0.149082 2.236783 0.086073 +v -0.172146 2.236783 0.000000 +v -0.149082 2.236783 -0.086073 +v -0.086073 2.236783 -0.149082 +v 0.086073 2.304473 -0.149082 +v -0.000000 2.304473 -0.172145 +v 0.149082 2.304473 -0.086073 +v 0.172146 2.304473 0.000000 +v 0.149082 2.304473 0.086073 +v 0.086073 2.304473 0.149082 +v 0.000000 2.304473 0.172146 +v -0.086073 2.304473 0.149082 +v -0.149082 2.304473 0.086073 +v -0.172146 2.304473 0.000000 +v -0.149082 2.304473 -0.086073 +v -0.086073 2.304473 -0.149082 +v 0.132126 2.304473 -0.228848 +v 0.000000 2.304473 -0.264251 +v 0.228848 2.304473 -0.132126 +v 0.264251 2.304473 0.000000 +v 0.228848 2.304473 0.132126 +v 0.132126 2.304473 0.228848 +v 0.000000 2.304473 0.264251 +v -0.132126 2.304473 0.228848 +v -0.228848 2.304473 0.132126 +v -0.264251 2.304473 0.000000 +v -0.228849 2.304473 -0.132126 +v -0.132126 2.304473 -0.228848 +v 0.132126 2.465501 -0.228848 +v -0.000000 2.465501 -0.264251 +v 0.228848 2.465501 -0.132126 +v 0.264251 2.465501 0.000000 +v 0.228848 2.465501 0.132126 +v 0.132126 2.465501 0.228848 +v 0.000000 2.465501 0.264251 +v -0.132126 2.465501 0.228848 +v -0.228848 2.465501 0.132126 +v -0.264251 2.465501 0.000000 +v -0.228849 2.465501 -0.132126 +v -0.132126 2.465501 -0.228848 +v 0.238859 2.704567 -0.413717 +v -0.000000 2.704567 -0.477719 +v 0.413717 2.704567 -0.238860 +v 0.477719 2.704567 -0.000000 +v 0.413717 2.704567 0.238859 +v 0.238860 2.704567 0.413717 +v 0.000000 2.704567 0.477719 +v -0.238859 2.704567 0.413717 +v -0.413717 2.704567 0.238860 +v -0.477719 2.704567 0.000000 +v -0.413717 2.704567 -0.238859 +v -0.238860 2.704567 -0.413717 +v 0.086073 2.704567 -0.149082 +v -0.000000 2.704567 -0.172145 +v 0.149082 2.704567 -0.086073 +v 0.172146 2.704567 0.000000 +v 0.149082 2.704567 0.086073 +v 0.086073 2.704567 0.149082 +v 0.000000 2.704567 0.172146 +v -0.086073 2.704567 0.149082 +v -0.149082 2.704567 0.086073 +v -0.172146 2.704567 0.000000 +v -0.149082 2.704567 -0.086073 +v -0.086073 2.704567 -0.149082 +v 0.239142 2.236782 -0.413553 +v 0.000326 2.236782 -0.477719 +v 0.413880 2.236782 -0.238577 +v 0.477719 2.236782 0.000326 +v 0.413553 2.236782 0.239142 +v 0.238577 2.236782 0.413880 +v -0.000326 2.236782 0.477719 +v -0.239142 2.236782 0.413553 +v -0.413880 2.236782 0.238577 +v -0.477719 2.236782 -0.000326 +v -0.413554 2.236782 -0.239142 +v -0.238577 2.236782 -0.413880 +v 0.086175 2.236782 -0.149023 +v 0.000118 2.236782 -0.172145 +v 0.149141 2.236782 -0.085971 +v 0.172145 2.236782 0.000118 +v 0.149023 2.236782 0.086175 +v 0.085971 2.236782 0.149141 +v -0.000118 2.236782 0.172145 +v -0.086174 2.236782 0.149024 +v -0.149141 2.236782 0.085971 +v -0.172145 2.236782 -0.000117 +v -0.149024 2.236782 -0.086174 +v -0.085971 2.236782 -0.149141 +v 0.239142 2.704566 -0.413553 +v 0.000326 2.704566 -0.477719 +v 0.413880 2.704566 -0.238577 +v 0.477719 2.704566 0.000326 +v 0.413553 2.704566 0.239142 +v 0.238577 2.704566 0.413880 +v -0.000326 2.704566 0.477719 +v -0.239142 2.704566 0.413553 +v -0.413880 2.704566 0.238577 +v -0.477719 2.704566 -0.000326 +v -0.413554 2.704566 -0.239142 +v -0.238577 2.704566 -0.413880 +v 0.086175 2.704566 -0.149023 +v 0.000118 2.704566 -0.172145 +v 0.149141 2.704566 -0.085971 +v 0.172145 2.704566 0.000118 +v 0.149023 2.704566 0.086175 +v 0.085971 2.704566 0.149141 +v -0.000118 2.704566 0.172145 +v -0.086174 2.704566 0.149024 +v -0.149141 2.704566 0.085971 +v -0.172145 2.704566 -0.000117 +v -0.149024 2.704566 -0.086174 +v -0.085971 2.704566 -0.149141 +v -1.500000 0.312500 0.187500 +v -1.500000 0.687500 0.187500 +v -0.500000 0.312500 0.187500 +v -0.500000 0.687500 0.187500 +v -1.500000 0.312500 -0.187500 +v -1.500000 0.687500 -0.187500 +v -0.500000 0.312500 -0.187500 +v -0.500000 0.687500 -0.187500 +v -0.187500 0.312500 1.500000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 0.500000 +v -0.187500 0.687500 0.500000 +v 0.187500 0.312500 1.500000 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 0.500000 +v 0.187500 0.687500 0.500000 +v -0.187500 0.312500 -1.500000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -0.500000 +v -0.187500 0.687500 -0.500000 +v 0.187500 0.312500 -1.500000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.687500 -0.500000 +v 1.500000 0.312500 0.187500 +v 1.500000 0.687500 0.187500 +v 0.500000 0.312500 0.187500 +v 0.500000 0.687500 0.187500 +v 1.500000 0.312500 -0.187500 +v 1.500000 0.687500 -0.187500 +v 0.500000 0.312500 -0.187500 +v 0.500000 0.687500 -0.187500 +v -1.500454 0.002954 1.500454 +v -1.500454 2.997456 1.500454 +v -1.500454 0.002954 -1.500454 +v -1.500454 2.997456 -1.500454 +v 1.500454 0.002954 1.500454 +v 1.500454 2.997456 1.500454 +v 1.500454 0.002954 -1.500454 +v 1.500454 2.997456 -1.500454 +v -1.498351 0.187406 1.309727 +v -1.497932 2.810412 1.311171 +v -1.498373 2.810412 -1.311171 +v -1.498351 0.187406 -1.309727 +v -1.313272 0.183729 -1.500454 +v -1.313272 2.810274 -1.500454 +v 1.313272 2.810274 -1.500454 +v 1.313272 0.183729 -1.500454 +v 1.500454 0.184605 -1.312397 +v 1.500454 2.809398 -1.312397 +v 1.500454 2.809398 1.312397 +v 1.500454 0.184605 1.312397 +v 1.312296 0.184706 1.500454 +v 1.312296 2.809298 1.500454 +v -1.312296 2.809298 1.500454 +v -1.312296 0.184706 1.500454 +v -1.124380 0.002954 -1.124380 +v 1.124380 0.002954 -1.124380 +v 1.124380 0.002954 1.124380 +v -1.124380 0.002954 1.124380 +v 1.307815 2.995548 -1.318863 +v -1.332176 2.995548 -1.318863 +v -1.332176 2.995548 1.318863 +v 1.307815 2.995548 1.318863 +v -1.124380 0.371661 -1.124380 +v 1.124380 0.371661 -1.124380 +v 1.124380 0.371661 1.124380 +v -1.124380 0.371661 1.124380 +v -1.505620 -0.008619 1.505620 +v -1.505620 3.000036 1.505620 +v -1.505620 -0.008619 -1.505620 +v -1.505620 3.000036 -1.505620 +v 1.505620 -0.008619 1.505620 +v 1.505620 3.000036 1.505620 +v 1.505620 -0.008619 -1.505620 +v 1.505620 3.000036 -1.505620 +v -1.503510 0.182897 1.314237 +v -1.503336 2.814934 1.315685 +v -1.503336 2.814934 -1.315685 +v -1.503510 0.182897 -1.314237 +v -1.317794 0.179208 -1.505620 +v -1.317794 2.814795 -1.505620 +v 1.317794 2.814795 -1.505620 +v 1.317794 0.179208 -1.505620 +v 1.505620 0.180086 -1.316916 +v 1.505620 2.813917 -1.316916 +v 1.505620 2.813917 1.316916 +v 1.505620 0.180086 1.316916 +v 1.316814 0.180187 1.505620 +v 1.316814 2.813816 1.505620 +v -1.316814 2.813816 1.505620 +v -1.316814 0.180187 1.505620 +v -1.115172 -0.008619 -1.118105 +v 1.115172 -0.008619 -1.118105 +v 1.115172 -0.008619 1.118105 +v -1.115172 -0.008619 1.118105 +v 1.312318 2.998122 -1.323404 +v -1.336763 2.998122 -1.323404 +v -1.336763 2.998122 1.323404 +v 1.312318 2.998122 1.323404 +v -1.115172 0.247780 -1.118105 +v 1.115172 0.247780 -1.118105 +v 1.115172 0.247780 1.118105 +v -1.115172 0.247780 1.118105 +vt 0.373879 0.544776 +vt 0.438621 0.544776 +vt 0.468750 0.522388 +vt 0.373879 0.544776 +vt 0.438621 0.544776 +vt 0.468750 0.522388 +vt 0.348297 0.522388 +vt 0.348297 0.477612 +vt 0.468750 0.305970 +vt 0.083333 0.619403 +vt 0.031250 0.425373 +vt 0.083333 0.425373 +vt 0.164237 0.514925 +vt 0.294096 0.477612 +vt 0.294096 0.514925 +vt 0.468750 0.305970 +vt 0.468750 0.522388 +vt 0.348297 0.477612 +vt 0.348297 0.522388 +vt 0.373879 0.544776 +vt 0.438621 0.544776 +vt 0.416667 0.305970 +vt 0.164237 0.477612 +vt 0.041667 0.305970 +vt 0.031250 0.425373 +vt 0.083333 0.619403 +vt 0.031250 0.619403 +vt 0.348297 0.522388 +vt 0.348297 0.477612 +vt 0.468750 0.305970 +vt 0.164237 0.514925 +vt 0.294096 0.477612 +vt 0.294096 0.514925 +vt 0.083333 0.619403 +vt 0.031250 0.425373 +vt 0.083333 0.425373 +vt 0.348297 0.522388 +vt 0.348297 0.477612 +vt 0.468750 0.305970 +vt 0.373879 0.544776 +vt 0.438621 0.544776 +vt 0.468750 0.522388 +vt 0.416667 0.305970 +vt 0.164237 0.477612 +vt 0.041667 0.305970 +vt 0.031250 0.425373 +vt 0.083333 0.619403 +vt 0.031250 0.619403 +vt 0.739583 0.776119 +vt 0.781250 0.798507 +vt 0.739583 0.798507 +vt 0.656250 0.776119 +vt 0.697917 0.798507 +vt 0.656250 0.798507 +vt 0.614583 0.798507 +vt 0.614583 0.776119 +vt 0.572917 0.776119 +vt 0.531250 0.798507 +vt 0.531250 0.776119 +vt 0.697917 0.776119 +vt 0.739583 0.798507 +vt 0.572917 0.798507 +vt 0.739583 0.776119 +vt 0.781250 0.798507 +vt 0.572917 0.776119 +vt 0.531250 0.798507 +vt 0.531250 0.776119 +vt 0.614583 0.776119 +vt 0.572917 0.798507 +vt 0.656250 0.776119 +vt 0.614583 0.798507 +vt 0.697917 0.798507 +vt 0.656250 0.798507 +vt 0.697917 0.776119 +vt 0.531250 0.820895 +vt 0.572917 0.858209 +vt 0.531250 0.858209 +vt 0.781250 0.820895 +vt 0.739583 0.858209 +vt 0.739583 0.820895 +vt 0.614583 0.820895 +vt 0.656250 0.858209 +vt 0.614583 0.858209 +vt 0.781250 0.820895 +vt 0.739583 0.858209 +vt 0.739583 0.820895 +vt 0.697917 0.858209 +vt 0.697917 0.820895 +vt 0.614583 0.820895 +vt 0.656250 0.858209 +vt 0.614583 0.858209 +vt 0.572917 0.820895 +vt 0.572917 0.858209 +vt 0.697917 0.858209 +vt 0.697917 0.820895 +vt 0.656250 0.820895 +vt 0.572917 0.820895 +vt 0.531250 0.820895 +vt 0.531250 0.858209 +vt 0.656250 0.820895 +vt 0.656250 0.858209 +vt 0.697917 0.873134 +vt 0.656250 0.873134 +vt 0.572917 0.858209 +vt 0.531250 0.873134 +vt 0.531250 0.858209 +vt 0.739583 0.858209 +vt 0.781250 0.873134 +vt 0.739583 0.873134 +vt 0.614583 0.873134 +vt 0.614583 0.858209 +vt 0.739583 0.858209 +vt 0.781250 0.873134 +vt 0.739583 0.873134 +vt 0.697917 0.858209 +vt 0.697917 0.873134 +vt 0.656250 0.858209 +vt 0.614583 0.873134 +vt 0.614583 0.858209 +vt 0.572917 0.873134 +vt 0.572917 0.858209 +vt 0.697917 0.858209 +vt 0.656250 0.873134 +vt 0.572917 0.873134 +vt 0.531250 0.873134 +vt 0.531250 0.858209 +vt 0.959530 0.694249 +vt 0.811439 0.724046 +vt 0.820707 0.697528 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.514925 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.514925 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.514925 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.597015 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.514925 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.597015 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.937500 0.514925 +vt 0.864583 0.514925 +vt 0.802083 0.500000 +vt 0.739583 0.500000 +vt 0.739583 0.589552 +vt 0.802083 0.365672 +vt 0.739583 0.365672 +vt 0.739583 0.455224 +vt 0.802083 0.455224 +vt 0.614583 0.500000 +vt 0.927083 0.500000 +vt 0.927083 0.455224 +vt 0.739583 0.365672 +vt 0.739583 0.455224 +vt 0.802083 0.455224 +vt 0.739583 0.500000 +vt 0.739583 0.589552 +vt 0.802083 0.589552 +vt 0.802083 0.500000 +vt 0.614583 0.455224 +vt 0.614583 0.500000 +vt 0.927083 0.500000 +vt 0.927083 0.455224 +vt 0.739583 0.500000 +vt 0.739583 0.455224 +vt 0.614583 0.455224 +vt 0.927083 0.500000 +vt 0.927083 0.455224 +vt 0.802083 0.455224 +vt 0.802083 0.500000 +vt 0.802083 0.365672 +vt 0.739583 0.365672 +vt 0.802083 0.589552 +vt 0.802083 0.589552 +vt 0.802083 0.500000 +vt 0.739583 0.500000 +vt 0.802083 0.455224 +vt 0.802083 0.365672 +vt 0.739583 0.365672 +vt 0.739583 0.455224 +vt 0.927083 0.500000 +vt 0.927083 0.455224 +vt 0.614583 0.455224 +vt 0.614583 0.500000 +vt 0.468750 0.619403 +vt 0.000000 0.641791 +vt 0.500000 0.641791 +vt 0.031250 0.619403 +vt 0.000000 0.283582 +vt 0.468750 0.305970 +vt 0.500000 0.283582 +vt 0.000000 0.283582 +vt 0.468750 0.305970 +vt 0.500000 0.283582 +vt 0.500000 0.641791 +vt 0.468750 0.619403 +vt 0.000000 0.641791 +vt 0.031250 0.619403 +vt 0.500000 1.000000 +vt 0.531250 0.664179 +vt 1.000000 0.641791 +vt 0.968750 0.664179 +vt 1.000000 1.000000 +vt 0.968750 0.977612 +vt 1.000000 0.641791 +vt 0.968750 0.977612 +vt 1.000000 1.000000 +vt 0.531250 0.977612 +vt 0.500000 1.000000 +vt 0.531250 0.664179 +vt 0.562500 0.328358 +vt 1.000000 0.283582 +vt 0.937500 0.328358 +vt 0.937500 0.597015 +vt 0.562500 0.597015 +vt 0.531250 0.619403 +vt 0.531250 0.305970 +vt 1.000000 0.283582 +vt 0.968750 0.619403 +vt 0.062500 0.686567 +vt 0.437500 0.641791 +vt 0.062500 0.641791 +vt 0.062500 0.955224 +vt 0.010417 0.686567 +vt 0.010417 0.955224 +vt 0.437500 0.955224 +vt 0.062500 1.000000 +vt 0.437500 1.000000 +vt 0.437500 0.686567 +vt 0.489583 0.955224 +vt 0.489583 0.686567 +vt 0.000000 0.641791 +vt 0.468750 0.619403 +vt 0.500000 0.641791 +vt 0.000000 0.283582 +vt 0.031250 0.619403 +vt 0.468750 0.305970 +vt 0.031250 0.305970 +vt 0.500000 0.283582 +vt 0.500000 0.283582 +vt 0.031250 0.305970 +vt 0.000000 0.283582 +vt 0.500000 0.641791 +vt 0.468750 0.305970 +vt 0.031250 0.619403 +vt 0.468750 0.619403 +vt 0.000000 0.641791 +vt 0.531250 0.977612 +vt 0.500000 1.000000 +vt 1.000000 0.641791 +vt 0.531250 0.664179 +vt 0.968750 0.977612 +vt 0.968750 0.664179 +vt 1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.968750 0.664179 +vt 1.000000 0.641791 +vt 0.500000 1.000000 +vt 0.968750 0.977612 +vt 0.531250 0.664179 +vt 0.531250 0.977612 +vt 1.000000 0.283582 +vt 0.562500 0.328358 +vt 0.937500 0.328358 +vt 0.937500 0.597015 +vt 0.562500 0.597015 +vt 0.531250 0.619403 +vt 0.968750 0.305970 +vt 0.531250 0.305970 +vt 1.000000 0.283582 +vt 0.968750 0.619403 +vt 0.437500 0.641791 +vt 0.062500 0.686567 +vt 0.062500 0.641791 +vt 0.010417 0.686567 +vt 0.062500 0.955224 +vt 0.010417 0.955224 +vt 0.062500 1.000000 +vt 0.437500 0.955224 +vt 0.437500 1.000000 +vt 0.489583 0.955224 +vt 0.437500 0.686567 +vt 0.489583 0.686567 +vt 0.031250 0.619403 +vt 0.083333 0.425373 +vt 0.031250 0.619403 +vt 0.083333 0.425373 +vt 0.781250 0.776119 +vt 0.781250 0.776119 +vt 0.781250 0.858209 +vt 0.781250 0.858209 +vt 0.781250 0.858209 +vt 0.781250 0.858209 +vt 0.848484 0.674329 +vt 0.927149 0.674350 +vt 0.890133 0.667710 +vt 0.968770 0.724088 +vt 0.959501 0.750607 +vt 0.931725 0.773805 +vt 0.853060 0.773784 +vt 0.890075 0.780425 +vt 0.820678 0.753885 +vt 0.864583 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.864583 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.597015 +vt 0.864583 0.514925 +vt 0.937500 0.597015 +vt 0.864583 0.514925 +vt 0.864583 0.514925 +vt 0.937500 0.514925 +vt 0.937500 0.597015 +vt 0.937500 0.597015 +vt 0.937500 0.514925 +vt 0.937500 0.597015 +vt 0.802083 0.589552 +vt 0.614583 0.455224 +vt 0.802083 0.365672 +vt 0.614583 0.500000 +vt 0.739583 0.589552 +vt 0.739583 0.589552 +vt 0.031250 0.305970 +vt 0.031250 0.305970 +vt 0.531250 0.977612 +vt 0.968750 0.664179 +vt 0.968750 0.305970 +vt 0.229167 0.029851 +vt 0.270833 0.014925 +vt 0.270833 0.029851 +vt 0.593750 0.029851 +vt 0.750000 0.014925 +vt 0.750000 0.029851 +vt 0.437500 0.029851 +vt 0.343750 0.014925 +vt 0.437500 0.014925 +vt 0.479167 0.268657 +vt 0.437500 0.283582 +vt 0.437500 0.268657 +vt 0.187500 0.268657 +vt -0.000000 0.283582 +vt -0.000000 0.268657 +vt 0.229167 0.283582 +vt 0.229167 0.268657 +vt 0.552083 0.014925 +vt 0.552083 0.029851 +vt 0.510417 0.014925 +vt 0.302083 0.014925 +vt 0.302083 0.029851 +vt 0.479167 0.014925 +vt 0.510417 0.029851 +vt 0.479167 0.029851 +vt 0.343750 0.029851 +vt 0.302083 0.268657 +vt 0.343750 0.283582 +vt 0.302083 0.283582 +vt 0.343750 0.253731 +vt 0.343750 0.268657 +vt 0.302083 0.238806 +vt 0.302083 0.253731 +vt 0.343750 0.223881 +vt 0.343750 0.238806 +vt 0.302083 0.208955 +vt 0.302083 0.223881 +vt 0.343750 0.194030 +vt 0.343750 0.208955 +vt 0.302083 0.179104 +vt 0.302083 0.194030 +vt 0.343750 0.164179 +vt 0.343750 0.179104 +vt 0.302083 0.149254 +vt 0.302083 0.164179 +vt 0.343750 0.134328 +vt 0.343750 0.149254 +vt 0.302083 0.119403 +vt 0.302083 0.134328 +vt 0.343750 0.104478 +vt 0.343750 0.119403 +vt 0.302083 0.089552 +vt 0.302083 0.104478 +vt 0.343750 0.074627 +vt 0.343750 0.089552 +vt 0.302083 0.059701 +vt 0.302083 0.074627 +vt 0.343750 0.044776 +vt 0.343750 0.059701 +vt 0.302083 0.044776 +vt 0.479167 0.283582 +vt 0.510417 0.268657 +vt 0.510417 0.283582 +vt 0.479167 0.253731 +vt 0.510417 0.238806 +vt 0.510417 0.253731 +vt 0.479167 0.223881 +vt 0.479167 0.238806 +vt 0.510417 0.208955 +vt 0.510417 0.223881 +vt 0.479167 0.194030 +vt 0.479167 0.208955 +vt 0.510417 0.179104 +vt 0.510417 0.194030 +vt 0.479167 0.164179 +vt 0.479167 0.179104 +vt 0.510417 0.149254 +vt 0.510417 0.164179 +vt 0.479167 0.134328 +vt 0.479167 0.149254 +vt 0.510417 0.119403 +vt 0.510417 0.134328 +vt 0.479167 0.104478 +vt 0.479167 0.119403 +vt 0.510417 0.089552 +vt 0.510417 0.104478 +vt 0.479167 0.074627 +vt 0.479167 0.089552 +vt 0.510417 0.059701 +vt 0.510417 0.074627 +vt 0.479167 0.044776 +vt 0.479167 0.059701 +vt 0.510417 0.044776 +vt 0.270833 0.268657 +vt 0.270833 0.283582 +vt 0.270833 0.238806 +vt 0.270833 0.253731 +vt 0.270833 0.208955 +vt 0.270833 0.223881 +vt 0.270833 0.179104 +vt 0.270833 0.194030 +vt 0.270833 0.149254 +vt 0.270833 0.164179 +vt 0.270833 0.119403 +vt 0.270833 0.134328 +vt 0.270833 0.089552 +vt 0.270833 0.104478 +vt 0.270833 0.059701 +vt 0.270833 0.074627 +vt 0.270833 0.044776 +vt 0.552083 0.268657 +vt 0.552083 0.283582 +vt 0.552083 0.253731 +vt 0.552083 0.238806 +vt 0.552083 0.223881 +vt 0.552083 0.208955 +vt 0.552083 0.194030 +vt 0.552083 0.179104 +vt 0.552083 0.164179 +vt 0.552083 0.149254 +vt 0.552083 0.134328 +vt 0.552083 0.119403 +vt 0.552083 0.104478 +vt 0.552083 0.089552 +vt 0.552083 0.074627 +vt 0.552083 0.059701 +vt 0.552083 0.044776 +vt 0.593750 0.268657 +vt 0.593750 0.283582 +vt 0.593750 0.238806 +vt 0.593750 0.253731 +vt 0.593750 0.208955 +vt 0.593750 0.223881 +vt 0.593750 0.179104 +vt 0.593750 0.194030 +vt 0.593750 0.149254 +vt 0.593750 0.164179 +vt 0.593750 0.119403 +vt 0.593750 0.134328 +vt 0.593750 0.089552 +vt 0.593750 0.104478 +vt 0.593750 0.059701 +vt 0.593750 0.074627 +vt 0.593750 0.044776 +vt 0.229167 0.014925 +vt 0.187500 0.029851 +vt 0.187500 0.014925 +vt 0.229167 0.044776 +vt 0.187500 0.059701 +vt 0.187500 0.044776 +vt 0.229167 0.074627 +vt 0.229167 0.059701 +vt 0.187500 0.089552 +vt 0.187500 0.074627 +vt 0.229167 0.104478 +vt 0.229167 0.089552 +vt 0.187500 0.119403 +vt 0.187500 0.104478 +vt 0.229167 0.134328 +vt 0.229167 0.119403 +vt 0.187500 0.149254 +vt 0.187500 0.134328 +vt 0.229167 0.164179 +vt 0.229167 0.149254 +vt 0.187500 0.179104 +vt 0.187500 0.164179 +vt 0.229167 0.194030 +vt 0.229167 0.179104 +vt 0.187500 0.208955 +vt 0.187500 0.194030 +vt 0.229167 0.223881 +vt 0.229167 0.208955 +vt 0.187500 0.238806 +vt 0.187500 0.223881 +vt 0.229167 0.253731 +vt 0.229167 0.238806 +vt 0.187500 0.253731 +vt -0.000000 0.014925 +vt -0.000000 0.029851 +vt -0.000000 0.044776 +vt -0.000000 0.059701 +vt -0.000000 0.074627 +vt -0.000000 0.089552 +vt -0.000000 0.104478 +vt -0.000000 0.119403 +vt -0.000000 0.134328 +vt -0.000000 0.149254 +vt -0.000000 0.164179 +vt -0.000000 0.179104 +vt -0.000000 0.194030 +vt -0.000000 0.208955 +vt -0.000000 0.223881 +vt -0.000000 0.238806 +vt -0.000000 0.253731 +vt 0.437500 0.044776 +vt 0.437500 0.074627 +vt 0.437500 0.059701 +vt 0.437500 0.104478 +vt 0.437500 0.089552 +vt 0.437500 0.134328 +vt 0.437500 0.119403 +vt 0.437500 0.164179 +vt 0.437500 0.149254 +vt 0.437500 0.194030 +vt 0.437500 0.179104 +vt 0.437500 0.223881 +vt 0.437500 0.208955 +vt 0.437500 0.253731 +vt 0.437500 0.238806 +vt 0.750000 0.283582 +vt 0.750000 0.268657 +vt 0.750000 0.253731 +vt 0.750000 0.238806 +vt 0.750000 0.223881 +vt 0.750000 0.208955 +vt 0.750000 0.194030 +vt 0.750000 0.179104 +vt 0.750000 0.164179 +vt 0.750000 0.149254 +vt 0.750000 0.134328 +vt 0.750000 0.119403 +vt 0.750000 0.104478 +vt 0.750000 0.089552 +vt 0.750000 0.074627 +vt 0.750000 0.059701 +vt 0.750000 0.044776 +vt 0.614583 0.664179 +vt 0.656250 0.664179 +vt 0.572917 0.664179 +vt 0.531250 0.664179 +vt 0.781250 0.664179 +vt 0.739583 0.664179 +vt 0.697917 0.664179 +vt 0.656250 0.664179 +vt 0.614583 0.664179 +vt 0.572917 0.664179 +vt 0.531250 0.664179 +vt 0.781250 0.664179 +vt 0.739583 0.664179 +vt 0.697917 0.664179 +vt 0.531250 0.880597 +vt 0.697917 0.880597 +vt 0.656250 0.880597 +vt 0.531250 0.880597 +vt 0.739583 0.880597 +vt 0.614583 0.880597 +vt 0.739583 0.880597 +vt 0.697917 0.880597 +vt 0.614583 0.880597 +vt 0.572917 0.880597 +vt 0.656250 0.880597 +vt 0.572917 0.880597 +vt 0.593750 0.014925 +vt 0.187500 0.283582 +vt 0.781250 0.880597 +vt 0.781250 0.880597 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.8809 0.4734 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.8719 0.4897 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.4994 0.0000 -0.8664 +vn 0.4994 0.0000 0.8664 +vn 0.8664 -0.0000 -0.4994 +vn -1.0000 0.0000 -0.0007 +vn -0.8664 0.0000 0.4994 +vn -0.0007 -0.0000 1.0000 +vn 1.0000 -0.0000 0.0007 +vn -0.8657 0.0000 -0.5006 +vn 0.0007 0.0000 -1.0000 +vn 0.8657 0.0000 0.5006 +vn -0.5006 0.0000 0.8657 +vn 0.5006 0.0000 -0.8657 +vn -0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 -0.5000 +vn 1.0000 0.0000 -0.0000 +vn 0.8660 0.0000 0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.5000 0.0000 0.8660 +vn -0.8660 0.0000 0.5000 +vn -1.0000 0.0000 -0.0000 +vn -0.8660 0.0000 -0.5000 +vn 0.9999 0.0000 0.0110 +vn 0.9999 0.0135 0.0000 +vn 0.9999 0.0000 -0.0110 +vn 0.9999 -0.0114 0.0000 +vn 0.0000 -0.9999 -0.0105 +vn -0.0113 -0.9999 0.0000 +vn 0.0000 -0.9999 0.0105 +vn 0.0099 -1.0000 0.0000 +vn -0.9999 0.0000 -0.0110 +vn -0.9999 -0.0123 0.0000 +vn -0.9999 0.0001 0.0121 +vn -0.9999 0.0110 0.0000 +vn 0.0000 0.9999 0.0105 +vn 0.0113 0.9999 0.0000 +vn 0.0000 0.9999 -0.0105 +vn -0.0099 1.0000 0.0000 +vn 0.9999 -0.0002 0.0135 +vn 0.9999 0.0110 -0.0002 +vn -0.9999 0.0001 -0.0121 +vn -0.9999 0.0000 0.0110 +vn -0.2575 0.9661 0.0204 +vn 0.2350 0.7987 0.5539 +vn 0.4929 0.8701 0.0015 +vn 0.9090 0.4158 0.0295 +vn 0.9434 0.2695 -0.1931 +vn 0.9997 0.0000 0.0241 +vn -0.6297 0.7768 -0.0107 +vn 0.0228 0.7593 0.6503 +vn -0.0188 0.7524 0.6584 +vn -0.9484 0.3168 0.0112 +vn -0.0188 0.7524 -0.6584 +vn -0.6297 0.7768 0.0107 +vn -0.9085 0.4167 -0.0296 +vn -0.9406 0.2792 0.1928 +vn -0.9997 0.0000 -0.0239 +vn -0.4229 0.8072 -0.4117 +vn -0.2575 0.9661 -0.0204 +vn 0.4213 0.8071 0.4136 +vn 0.2596 0.9655 0.0204 +vn -0.2331 0.7987 0.5548 +vn 0.6451 0.3269 0.6906 +vn 0.9482 0.3173 -0.0107 +vn -0.6416 0.3261 0.6943 +vn -0.4947 0.8690 0.0010 +vn -0.9484 0.3168 -0.0112 +vn 0.6334 0.7737 -0.0104 +vn 0.9482 0.3173 0.0107 +vn 0.0228 0.7593 -0.6503 +vn 0.6451 0.3269 -0.6906 +vn 0.7569 0.6534 0.0098 +vn 0.6334 0.7737 0.0104 +vn 0.9482 0.3174 0.0081 +vn 0.8900 0.4558 0.0065 +vn 0.7569 0.6535 0.0070 +vn 0.6335 0.7736 0.0078 +vn 0.9483 0.3174 0.0054 +vn 0.8901 0.4557 0.0047 +vn 0.7569 0.6535 0.0042 +vn 0.6336 0.7736 0.0052 +vn 0.9483 0.3174 0.0027 +vn 0.8901 0.4557 0.0028 +vn 0.7569 0.6535 0.0014 +vn 0.6337 0.7736 0.0026 +vn 0.9483 0.3174 0.0000 +vn 0.8901 0.4557 0.0009 +vn 0.7569 0.6535 -0.0014 +vn 0.6337 0.7736 0.0000 +vn 0.9483 0.3174 -0.0027 +vn 0.8901 0.4557 -0.0009 +vn 0.7569 0.6535 -0.0042 +vn 0.6337 0.7736 -0.0026 +vn 0.9483 0.3174 -0.0054 +vn 0.8901 0.4557 -0.0028 +vn 0.7569 0.6535 -0.0070 +vn 0.6336 0.7736 -0.0052 +vn 0.9482 0.3174 -0.0081 +vn 0.8901 0.4557 -0.0047 +vn 0.7569 0.6534 -0.0098 +vn 0.6335 0.7736 -0.0078 +vn 0.8900 0.4558 -0.0065 +vn -0.6416 0.3261 -0.6943 +vn -0.4947 0.8690 -0.0010 +vn -0.2331 0.7987 -0.5548 +vn -0.8895 0.4569 0.0070 +vn -0.4947 0.8690 -0.0008 +vn -0.2756 0.9612 -0.0102 +vn -0.8895 0.4569 0.0050 +vn -0.9484 0.3168 0.0084 +vn -0.4946 0.8691 -0.0005 +vn -0.2756 0.9612 -0.0073 +vn -0.8895 0.4568 0.0030 +vn -0.9484 0.3168 0.0056 +vn -0.4946 0.8691 -0.0002 +vn -0.2756 0.9612 -0.0043 +vn -0.8896 0.4568 0.0010 +vn -0.9485 0.3169 0.0028 +vn -0.4946 0.8691 0.0000 +vn -0.2757 0.9612 -0.0014 +vn -0.8896 0.4568 -0.0010 +vn -0.9485 0.3169 0.0000 +vn -0.4946 0.8691 0.0002 +vn -0.2757 0.9612 0.0014 +vn -0.8895 0.4568 -0.0030 +vn -0.9485 0.3169 -0.0028 +vn -0.4946 0.8691 0.0005 +vn -0.2756 0.9612 0.0043 +vn -0.8895 0.4569 -0.0050 +vn -0.9484 0.3168 -0.0056 +vn -0.4947 0.8690 0.0008 +vn -0.2756 0.9612 0.0073 +vn -0.8895 0.4569 -0.0070 +vn -0.9484 0.3168 -0.0084 +vn -0.2756 0.9612 0.0102 +vn 0.4929 0.8701 -0.0015 +vn 0.2350 0.7987 -0.5539 +vn 0.4928 0.8701 -0.0011 +vn 0.2778 0.9606 -0.0102 +vn 0.4928 0.8701 -0.0007 +vn 0.2778 0.9606 -0.0073 +vn 0.4928 0.8701 -0.0004 +vn 0.2778 0.9606 -0.0043 +vn 0.4928 0.8701 0.0000 +vn 0.2779 0.9606 -0.0014 +vn 0.4928 0.8701 0.0004 +vn 0.2779 0.9606 0.0014 +vn 0.4928 0.8701 0.0007 +vn 0.2778 0.9606 0.0043 +vn 0.4928 0.8701 0.0011 +vn 0.2778 0.9606 0.0073 +vn 0.2778 0.9606 0.0102 +vn 0.2596 0.9655 -0.0204 +vn 0.4213 0.8071 -0.4136 +vn 0.4650 0.8851 -0.0183 +vn 0.2597 0.9655 -0.0153 +vn 0.4651 0.8852 -0.0131 +vn 0.2598 0.9656 -0.0102 +vn 0.4651 0.8852 -0.0078 +vn 0.2598 0.9656 -0.0051 +vn 0.4651 0.8852 -0.0026 +vn 0.2598 0.9656 0.0000 +vn 0.4651 0.8852 0.0026 +vn 0.2598 0.9656 0.0051 +vn 0.4651 0.8852 0.0078 +vn 0.2598 0.9656 0.0102 +vn 0.4651 0.8852 0.0131 +vn 0.2597 0.9655 0.0153 +vn 0.4650 0.8851 0.0183 +vn 0.9090 0.4158 -0.0295 +vn 0.8721 0.3391 -0.3527 +vn 0.9091 0.4158 -0.0221 +vn 0.9320 0.3618 -0.0188 +vn 0.9093 0.4159 -0.0147 +vn 0.9321 0.3619 -0.0134 +vn 0.9093 0.4159 -0.0074 +vn 0.9322 0.3619 -0.0080 +vn 0.9094 0.4159 0.0000 +vn 0.9322 0.3619 -0.0027 +vn 0.9093 0.4159 0.0074 +vn 0.9322 0.3619 0.0027 +vn 0.9093 0.4159 0.0147 +vn 0.9322 0.3619 0.0080 +vn 0.9091 0.4158 0.0221 +vn 0.9321 0.3619 0.0134 +vn 0.9320 0.3618 0.0188 +vn -0.4229 0.8072 0.4117 +vn -0.9085 0.4167 0.0296 +vn -0.8732 0.3390 0.3500 +vn -0.4663 0.8844 0.0184 +vn -0.9087 0.4168 0.0222 +vn -0.9322 0.3613 0.0188 +vn -0.4664 0.8845 0.0131 +vn -0.2575 0.9661 0.0153 +vn -0.9088 0.4168 0.0148 +vn -0.9323 0.3613 0.0134 +vn -0.4664 0.8845 0.0079 +vn -0.2576 0.9662 0.0102 +vn -0.9089 0.4169 0.0074 +vn -0.9324 0.3614 0.0080 +vn -0.4664 0.8845 0.0026 +vn -0.2576 0.9662 0.0051 +vn -0.9089 0.4169 0.0000 +vn -0.9324 0.3614 0.0027 +vn -0.4664 0.8845 -0.0026 +vn -0.2576 0.9662 0.0000 +vn -0.9089 0.4169 -0.0074 +vn -0.9324 0.3614 -0.0027 +vn -0.4664 0.8845 -0.0079 +vn -0.2576 0.9662 -0.0051 +vn -0.9088 0.4168 -0.0148 +vn -0.9324 0.3614 -0.0080 +vn -0.4664 0.8845 -0.0131 +vn -0.2576 0.9662 -0.0102 +vn -0.9087 0.4168 -0.0222 +vn -0.9323 0.3613 -0.0134 +vn -0.4663 0.8844 -0.0184 +vn -0.2575 0.9661 -0.0153 +vn -0.9322 0.3613 -0.0188 +vn -0.9406 0.2792 -0.1928 +vn -0.9997 0.0000 0.0239 +vn -0.9998 0.0000 0.0221 +vn -0.9998 0.0000 0.0179 +vn -0.9998 0.0000 0.0157 +vn -0.9999 0.0000 0.0119 +vn -0.9999 0.0000 0.0095 +vn -1.0000 0.0000 0.0060 +vn -1.0000 0.0000 0.0031 +vn -1.0000 0.0000 -0.0031 +vn -1.0000 0.0000 -0.0060 +vn -0.9999 0.0000 -0.0095 +vn -0.9999 0.0000 -0.0119 +vn -0.9998 0.0000 -0.0157 +vn -0.9998 0.0000 -0.0179 +vn -0.9998 0.0000 -0.0221 +vn -0.7587 0.6513 -0.0102 +vn -0.7587 0.6514 -0.0072 +vn -0.6298 0.7767 -0.0080 +vn -0.7587 0.6514 -0.0043 +vn -0.6299 0.7766 -0.0053 +vn -0.7587 0.6514 -0.0014 +vn -0.6299 0.7766 -0.0027 +vn -0.7587 0.6514 0.0014 +vn -0.6299 0.7766 0.0000 +vn -0.7587 0.6514 0.0043 +vn -0.6299 0.7766 0.0027 +vn -0.7587 0.6514 0.0072 +vn -0.6299 0.7766 0.0053 +vn -0.7587 0.6513 0.0102 +vn -0.6298 0.7767 0.0080 +vn 0.9434 0.2695 0.1931 +vn 0.9997 0.0000 -0.0241 +vn 0.9998 0.0000 -0.0219 +vn 0.9998 0.0000 -0.0181 +vn 0.9999 0.0000 -0.0156 +vn 0.9999 0.0000 -0.0120 +vn 0.9999 0.0000 -0.0094 +vn 1.0000 0.0000 -0.0060 +vn 1.0000 0.0000 -0.0031 +vn 1.0000 0.0000 0.0031 +vn 1.0000 0.0000 0.0060 +vn 0.9999 0.0000 0.0094 +vn 0.9999 0.0000 0.0120 +vn 0.9999 0.0000 0.0156 +vn 0.9998 0.0000 0.0181 +vn 0.9998 0.0000 0.0219 +vn 0.0000 -0.7193 -0.6947 +vn 0.4940 0.1539 -0.8557 +vn 0.0000 0.1539 -0.9881 +vn 0.3473 -0.7193 -0.6016 +vn 0.8557 0.1539 -0.4940 +vn 0.6016 -0.7193 -0.3473 +vn 0.9881 0.1539 0.0000 +vn 0.6016 -0.7193 0.3473 +vn 0.8557 0.1539 0.4940 +vn 0.3473 -0.7193 0.6016 +vn 0.4940 0.1539 0.8557 +vn 0.0000 -0.7193 0.6947 +vn 0.0000 0.1539 0.9881 +vn -0.4940 0.1539 0.8557 +vn -0.3473 -0.7193 0.6016 +vn -0.8557 0.1539 0.4940 +vn -0.6016 -0.7193 0.3473 +vn -0.9881 0.1539 0.0000 +vn -0.6016 -0.7193 -0.3473 +vn -0.8557 0.1539 -0.4940 +vn -0.3473 -0.7193 -0.6016 +vn -0.4940 0.1539 -0.8557 +vn 0.6557 -0.6532 -0.3786 +vn 0.7049 0.6082 -0.3649 +vn 0.7571 -0.6532 0.0000 +vn -0.7571 -0.6532 0.0000 +vn -0.7929 0.6082 -0.0364 +vn -0.6557 -0.6532 -0.3786 +vn 0.0000 -0.6532 0.7571 +vn -0.0364 0.6082 0.7929 +vn -0.3786 -0.6532 0.6557 +vn 0.7929 0.6082 0.0364 +vn 0.6557 -0.6532 0.3786 +vn -0.6685 0.6082 -0.4280 +vn -0.3786 -0.6532 -0.6557 +vn 0.0000 -0.6532 -0.7571 +vn 0.0364 0.6082 -0.7929 +vn 0.3786 -0.6532 -0.6557 +vn -0.4280 0.6082 0.6685 +vn -0.6557 -0.6532 0.3786 +vn 0.6685 0.6082 0.4280 +vn 0.3786 -0.6532 0.6557 +vn -0.3649 0.6082 -0.7049 +vn 0.4280 0.6082 -0.6685 +vn -0.7049 0.6082 0.3649 +vn 0.3649 0.6082 0.7049 +vn 0.5743 0.7314 0.3677 +vn 0.0000 -0.7703 0.6377 +vn 0.3135 0.7314 0.6056 +vn 0.3677 0.7314 -0.5743 +vn 0.6377 -0.7703 0.0000 +vn 0.6056 0.7314 -0.3135 +vn -0.6056 0.7314 0.3135 +vn -0.5523 -0.7703 -0.3189 +vn -0.6812 0.7314 -0.0313 +vn -0.3189 -0.7703 0.5523 +vn -0.0313 0.7314 0.6812 +vn 0.5523 -0.7703 0.3189 +vn 0.6812 0.7314 0.0313 +vn -0.3189 -0.7703 -0.5523 +vn -0.5743 0.7314 -0.3677 +vn -0.3135 0.7314 -0.6056 +vn 0.3189 -0.7703 -0.5523 +vn 0.0313 0.7314 -0.6812 +vn -0.5523 -0.7703 0.3189 +vn -0.3677 0.7314 0.5743 +vn 0.3189 -0.7703 0.5523 +vn 0.0000 -0.7703 -0.6377 +vn 0.5523 -0.7703 -0.3189 +vn -0.6377 -0.7703 0.0000 +vn -0.7571 0.6532 0.0000 +vn 0.3786 0.6532 0.6557 +vn 0.0000 0.6532 0.7571 +vn 0.7571 0.6532 0.0000 +vn -0.6557 0.6532 -0.3786 +vn -0.3786 0.6532 0.6557 +vn 0.6557 0.6532 0.3786 +vn -0.3786 0.6532 -0.6557 +vn 0.3786 0.6532 -0.6557 +vn -0.6557 0.6532 0.3786 +vn 0.0000 0.6532 -0.7571 +vn 0.6557 0.6532 -0.3786 +vn 0.8721 0.3391 0.3527 +vn -0.8732 0.3390 -0.3500 +vn 0.6947 -0.7193 0.0000 +vn -0.6947 -0.7193 0.0000 +usemtl None +s off +f 20/1/1 9/2/1 10/3/1 +f 22/4/2 15/5/2 16/6/2 +f 20/1/1 10/3/1 19/7/1 +f 19/7/1 10/3/1 6/8/1 +f 10/3/1 1/9/1 6/8/1 +f 5/10/3 232/11/3 3/12/3 +f 6/13/4 229/14/4 5/15/4 +f 3/16/1 13/17/1 5/18/1 +f 5/18/1 13/17/1 24/19/1 +f 23/20/1 24/19/1 13/17/1 +f 13/17/1 14/21/1 23/20/1 +f 232/22/1 230/23/1 231/24/1 +f 230/23/1 232/22/1 229/14/1 +f 1/25/5 230/26/5 6/27/5 +f 22/4/2 16/6/2 21/28/2 +f 21/28/2 16/6/2 8/29/2 +f 16/6/2 4/30/2 8/29/2 +f 8/31/4 233/32/4 7/33/4 +f 7/34/5 236/35/5 2/36/5 +f 18/37/2 7/38/2 2/39/2 +f 17/40/2 18/37/2 2/39/2 +f 17/40/2 2/39/2 12/41/2 +f 11/42/2 12/41/2 2/39/2 +f 236/43/2 234/44/2 235/45/2 +f 234/44/2 236/43/2 233/32/2 +f 4/46/3 234/47/3 8/48/3 +f 246/49/6 264/50/6 265/51/6 +f 238/52/6 272/53/6 262/54/6 +f 238/52/6 261/55/6 240/56/6 +f 242/57/6 264/58/6 244/59/6 +f 260/60/6 271/61/6 272/53/6 +f 240/56/6 263/62/6 242/57/6 +f 258/63/6 270/64/6 271/61/6 +f 254/65/6 270/66/6 256/67/6 +f 252/68/6 269/69/6 254/65/6 +f 250/70/6 268/71/6 252/68/6 +f 250/70/6 266/72/6 267/73/6 +f 248/74/6 265/51/6 266/72/6 +f 276/75/4 287/76/4 288/77/4 +f 282/78/4 295/79/4 283/80/4 +f 280/81/4 291/82/4 292/83/4 +f 276/84/4 289/85/4 277/86/4 +f 283/80/4 296/87/4 284/88/4 +f 273/89/4 286/90/4 285/91/4 +f 281/92/4 292/83/4 293/93/4 +f 277/86/4 290/94/4 278/95/4 +f 284/88/4 286/90/4 274/96/4 +f 275/97/4 285/91/4 287/76/4 +f 282/98/4 293/93/4 294/99/4 +f 278/95/4 291/82/4 279/100/4 +f 303/101/6 314/102/6 315/103/6 +f 299/104/6 312/105/6 300/106/6 +f 307/107/6 318/108/6 319/109/6 +f 303/101/6 316/110/6 304/111/6 +f 301/112/6 312/113/6 313/114/6 +f 308/115/6 319/109/6 320/116/6 +f 298/117/6 309/118/6 297/119/6 +f 304/111/6 317/120/6 305/121/6 +f 302/122/6 313/114/6 314/102/6 +f 298/117/6 320/116/6 310/123/6 +f 297/119/6 311/124/6 299/104/6 +f 305/121/6 318/125/6 306/126/6 +f 331/127/4 324/128/4 323/129/4 +f 365/130/7 401/131/7 377/132/7 +f 359/133/8 395/134/8 371/135/8 +f 368/136/9 404/137/9 380/138/9 +f 363/139/10 399/140/10 375/141/10 +f 362/142/11 398/143/11 374/144/11 +f 360/145/12 396/146/12 372/147/12 +f 358/148/13 394/149/13 370/150/13 +f 364/151/14 400/152/14 376/153/14 +f 366/154/15 402/155/15 378/156/15 +f 357/157/16 393/158/16 369/159/16 +f 361/160/17 397/161/17 373/162/17 +f 367/163/18 403/164/18 379/165/18 +f 287/166/19 335/167/19 275/168/19 +f 348/169/2 276/170/2 288/171/2 +f 349/172/20 277/173/20 289/174/20 +f 350/175/21 278/176/21 290/177/21 +f 291/178/22 339/179/22 279/180/22 +f 352/181/23 280/182/23 292/183/23 +f 353/184/24 281/185/24 293/186/24 +f 294/187/1 342/188/1 282/189/1 +f 283/190/25 355/191/25 343/192/25 +f 284/193/26 356/194/26 344/195/26 +f 286/196/27 334/197/27 274/198/27 +f 273/199/28 345/200/28 333/201/28 +f 406/202/1 405/203/1 407/204/1 +f 412/205/2 411/206/2 409/207/2 +f 410/208/27 409/207/27 405/203/27 +f 407/209/6 405/203/6 409/207/6 +f 408/210/4 412/211/4 410/208/4 +f 415/212/27 413/213/27 414/214/27 +f 417/215/22 419/216/22 420/217/22 +f 413/213/1 417/215/1 418/218/1 +f 413/213/6 415/219/6 419/220/6 +f 418/218/4 420/221/4 416/222/4 +f 422/223/27 421/224/27 423/225/27 +f 428/226/22 427/227/22 425/228/22 +f 426/229/2 425/228/2 421/224/2 +f 427/230/6 423/231/6 421/224/6 +f 428/232/4 426/229/4 422/223/4 +f 431/233/1 429/234/1 430/235/1 +f 433/236/2 435/237/2 436/238/2 +f 429/234/22 433/236/22 434/239/22 +f 429/234/6 431/240/6 435/241/6 +f 434/239/4 436/242/4 432/243/4 +f 445/244/29 438/245/29 437/246/29 +f 446/247/30 440/248/30 438/245/30 +f 440/248/31 448/249/31 439/250/31 +f 448/249/32 437/246/32 439/250/32 +f 439/251/1 450/252/1 440/253/1 +f 450/252/1 444/254/1 440/253/1 +f 451/255/1 443/256/1 444/254/1 +f 452/257/1 439/251/1 443/256/1 +f 443/258/27 454/259/27 444/254/27 +f 454/259/27 442/260/27 444/254/27 +f 455/261/27 441/262/27 442/260/27 +f 456/263/27 443/258/27 441/262/27 +f 441/264/2 458/265/2 442/266/2 +f 442/266/2 459/267/2 438/268/2 +f 459/267/2 437/246/2 438/268/2 +f 460/269/2 441/264/2 437/246/2 +f 461/270/4 443/271/4 439/250/4 +f 462/272/4 441/264/4 443/271/4 +f 463/273/4 437/246/4 441/264/4 +f 464/274/4 439/250/4 437/246/4 +f 465/275/33 440/253/33 444/254/33 +f 466/276/34 438/277/34 440/253/34 +f 438/277/35 468/278/35 442/260/35 +f 468/278/36 444/254/36 442/260/36 +f 469/279/2 462/280/2 461/281/2 +f 472/282/27 461/283/27 464/284/27 +f 471/285/1 464/286/1 463/287/1 +f 470/288/22 463/289/22 462/290/22 +f 469/279/4 471/285/4 470/288/4 +f 474/291/37 481/292/37 473/293/37 +f 476/294/38 482/295/38 474/291/38 +f 476/294/39 484/296/39 483/297/39 +f 473/293/40 484/296/40 475/298/40 +f 476/299/2 485/300/2 475/301/2 +f 480/302/2 486/303/2 476/299/2 +f 480/302/2 488/304/2 487/305/2 +f 475/301/2 488/304/2 479/306/2 +f 480/302/22 489/307/22 479/308/22 +f 478/309/22 490/310/22 480/302/22 +f 478/309/22 492/311/22 491/312/22 +f 477/313/22 489/307/22 492/311/22 +f 478/314/1 493/315/1 477/316/1 +f 474/317/1 494/318/1 478/314/1 +f 474/317/1 496/319/1 495/320/1 +f 477/316/1 496/319/1 473/293/1 +f 479/321/6 497/322/6 475/298/6 +f 477/316/6 498/323/6 479/321/6 +f 473/293/6 499/324/6 477/316/6 +f 475/298/6 500/325/6 473/293/6 +f 476/299/41 501/326/41 480/302/41 +f 476/299/42 503/327/42 502/328/42 +f 474/329/43 504/330/43 503/327/43 +f 480/302/44 504/330/44 478/309/44 +f 498/331/1 505/332/1 497/333/1 +f 497/334/22 508/335/22 500/336/22 +f 500/337/2 507/338/2 499/339/2 +f 499/340/27 506/341/27 498/342/27 +f 507/338/6 505/332/6 506/341/6 +f 5/10/3 229/343/3 232/11/3 +f 6/13/4 230/23/4 229/14/4 +f 1/25/5 231/344/5 230/26/5 +f 8/31/4 234/44/4 233/32/4 +f 7/34/5 233/345/5 236/35/5 +f 4/46/3 235/346/3 234/47/3 +f 246/49/6 244/347/6 264/50/6 +f 238/52/6 260/60/6 272/53/6 +f 238/52/6 262/54/6 261/55/6 +f 242/57/6 263/62/6 264/58/6 +f 260/60/6 258/63/6 271/61/6 +f 240/56/6 261/55/6 263/62/6 +f 258/63/6 256/348/6 270/64/6 +f 254/65/6 269/69/6 270/66/6 +f 252/68/6 268/71/6 269/69/6 +f 250/70/6 267/73/6 268/71/6 +f 250/70/6 248/74/6 266/72/6 +f 248/74/6 246/49/6 265/51/6 +f 276/75/4 275/97/4 287/76/4 +f 282/78/4 294/349/4 295/79/4 +f 280/81/4 279/100/4 291/82/4 +f 276/84/4 288/350/4 289/85/4 +f 283/80/4 295/79/4 296/87/4 +f 273/89/4 274/96/4 286/90/4 +f 281/92/4 280/81/4 292/83/4 +f 277/86/4 289/85/4 290/94/4 +f 284/88/4 296/87/4 286/90/4 +f 275/97/4 273/89/4 285/91/4 +f 282/98/4 281/92/4 293/93/4 +f 278/95/4 290/94/4 291/82/4 +f 303/101/6 302/122/6 314/102/6 +f 299/104/6 311/124/6 312/105/6 +f 307/107/6 306/351/6 318/108/6 +f 303/101/6 315/103/6 316/110/6 +f 301/112/6 300/352/6 312/113/6 +f 308/115/6 307/107/6 319/109/6 +f 298/117/6 310/123/6 309/118/6 +f 304/111/6 316/110/6 317/120/6 +f 302/122/6 301/112/6 313/114/6 +f 298/117/6 308/115/6 320/116/6 +f 297/119/6 309/118/6 311/124/6 +f 305/121/6 317/120/6 318/125/6 +f 323/129/4 321/353/4 332/354/4 +f 322/355/4 332/354/4 321/353/4 +f 331/127/4 330/356/4 324/128/4 +f 329/357/4 328/358/4 326/359/4 +f 327/360/4 326/359/4 328/358/4 +f 325/361/4 324/128/4 330/356/4 +f 323/129/4 332/354/4 331/127/4 +f 330/356/4 329/357/4 325/361/4 +f 326/359/4 325/361/4 329/357/4 +f 365/130/7 389/362/7 401/131/7 +f 359/133/8 383/363/8 395/134/8 +f 368/136/9 392/364/9 404/137/9 +f 363/139/10 387/365/10 399/140/10 +f 362/142/11 386/366/11 398/143/11 +f 360/145/12 384/367/12 396/146/12 +f 358/148/13 382/368/13 394/149/13 +f 364/151/14 388/369/14 400/152/14 +f 366/154/15 390/370/15 402/155/15 +f 357/157/16 381/371/16 393/158/16 +f 361/160/17 385/372/17 397/161/17 +f 367/163/18 391/373/18 403/164/18 +f 287/166/19 347/374/19 335/167/19 +f 348/169/2 336/375/2 276/170/2 +f 349/172/20 337/376/20 277/173/20 +f 350/175/21 338/377/21 278/176/21 +f 291/178/22 351/378/22 339/179/22 +f 352/181/23 340/379/23 280/182/23 +f 353/184/24 341/380/24 281/185/24 +f 294/187/1 354/381/1 342/188/1 +f 283/190/25 295/382/25 355/191/25 +f 284/193/26 296/383/26 356/194/26 +f 286/196/27 346/384/27 334/197/27 +f 273/199/28 285/385/28 345/200/28 +f 406/202/1 407/204/1 408/386/1 +f 412/205/2 409/207/2 410/208/2 +f 410/208/27 405/203/27 406/202/27 +f 407/209/6 409/207/6 411/387/6 +f 408/210/4 410/208/4 406/202/4 +f 415/212/27 414/214/27 416/388/27 +f 417/215/22 420/217/22 418/218/22 +f 413/213/1 418/218/1 414/214/1 +f 413/213/6 419/220/6 417/215/6 +f 418/218/4 416/222/4 414/214/4 +f 422/223/27 423/225/27 424/389/27 +f 428/226/22 425/228/22 426/229/22 +f 426/229/2 421/224/2 422/223/2 +f 427/230/6 421/224/6 425/228/6 +f 428/232/4 422/223/4 424/390/4 +f 431/233/1 430/235/1 432/391/1 +f 433/236/2 436/238/2 434/239/2 +f 429/234/22 434/239/22 430/235/22 +f 429/234/6 435/241/6 433/236/6 +f 434/239/4 432/243/4 430/235/4 +f 445/244/45 446/247/45 438/245/45 +f 446/247/46 447/392/46 440/248/46 +f 440/248/31 447/392/31 448/249/31 +f 448/249/32 445/244/32 437/246/32 +f 439/251/1 449/393/1 450/252/1 +f 450/252/1 451/255/1 444/254/1 +f 451/255/1 452/257/1 443/256/1 +f 452/257/1 449/393/1 439/251/1 +f 443/258/27 453/394/27 454/259/27 +f 454/259/27 455/261/27 442/260/27 +f 455/261/27 456/263/27 441/262/27 +f 456/263/27 453/394/27 443/258/27 +f 441/264/2 457/395/2 458/265/2 +f 442/266/2 458/265/2 459/267/2 +f 459/267/2 460/269/2 437/246/2 +f 460/269/2 457/395/2 441/264/2 +f 461/270/4 462/272/4 443/271/4 +f 462/272/4 463/273/4 441/264/4 +f 463/273/4 464/274/4 437/246/4 +f 464/274/4 461/270/4 439/250/4 +f 465/275/33 466/276/33 440/253/33 +f 466/276/34 467/396/34 438/277/34 +f 438/277/35 467/396/35 468/278/35 +f 468/278/36 465/275/36 444/254/36 +f 469/279/2 470/288/2 462/280/2 +f 472/282/27 469/279/27 461/283/27 +f 471/285/1 472/282/1 464/286/1 +f 470/288/22 471/285/22 463/289/22 +f 469/279/4 472/282/4 471/285/4 +f 474/291/47 482/295/47 481/292/47 +f 476/294/38 483/297/38 482/295/38 +f 476/294/48 475/298/48 484/296/48 +f 473/293/40 481/292/40 484/296/40 +f 476/299/2 486/303/2 485/300/2 +f 480/302/2 487/305/2 486/303/2 +f 480/302/2 479/306/2 488/304/2 +f 475/301/2 485/300/2 488/304/2 +f 480/302/22 490/310/22 489/307/22 +f 478/309/22 491/312/22 490/310/22 +f 478/309/22 477/313/22 492/311/22 +f 477/313/22 479/308/22 489/307/22 +f 478/314/1 494/318/1 493/315/1 +f 474/317/1 495/320/1 494/318/1 +f 474/317/1 473/293/1 496/319/1 +f 477/316/1 493/315/1 496/319/1 +f 479/321/6 498/323/6 497/322/6 +f 477/316/6 499/324/6 498/323/6 +f 473/293/6 500/325/6 499/324/6 +f 475/298/6 497/322/6 500/325/6 +f 476/299/41 502/328/41 501/326/41 +f 476/299/42 474/329/42 503/327/42 +f 474/329/43 478/309/43 504/330/43 +f 480/302/44 501/326/44 504/330/44 +f 498/331/1 506/341/1 505/332/1 +f 497/334/22 505/332/22 508/335/22 +f 500/337/2 508/335/2 507/338/2 +f 499/340/27 507/338/27 506/341/27 +f 507/338/6 508/335/6 505/332/6 +s 1 +f 93/397/49 20/398/50 177/399/51 +f 144/400/52 3/401/53 42/402/54 +f 92/403/55 6/404/56 5/405/57 +f 195/406/58 8/407/59 76/408/60 +f 110/409/61 2/410/62 25/411/63 +f 12/412/64 110/409/61 109/413/65 +f 14/414/66 144/400/52 143/415/67 +f 143/415/67 23/416/68 14/414/66 +f 177/399/51 19/417/69 178/418/70 +f 24/419/71 212/420/72 211/421/73 +f 178/418/70 6/404/56 75/422/74 +f 194/423/75 7/424/76 18/425/77 +f 194/423/75 60/426/78 59/427/79 +f 192/428/80 60/426/78 193/429/81 +f 192/428/80 62/430/82 61/431/83 +f 190/432/84 62/430/82 191/433/85 +f 190/432/84 64/434/86 63/435/87 +f 188/436/88 64/434/86 189/437/89 +f 188/436/88 66/438/90 65/439/91 +f 186/440/92 66/438/90 187/441/93 +f 186/440/92 68/442/94 67/443/95 +f 184/444/96 68/442/94 185/445/97 +f 184/444/96 70/446/98 69/447/99 +f 182/448/100 70/446/98 183/449/101 +f 182/448/100 72/450/102 71/451/103 +f 180/452/104 72/450/102 181/453/105 +f 180/452/104 74/454/106 73/455/107 +f 178/418/70 74/454/106 179/456/108 +f 21/457/109 228/458/110 22/459/111 +f 196/460/112 228/458/110 195/406/58 +f 196/460/112 226/461/113 227/462/114 +f 198/463/115 226/461/113 197/464/116 +f 198/463/115 224/465/117 225/466/118 +f 200/467/119 224/465/117 199/468/120 +f 200/467/119 222/469/121 223/470/122 +f 202/471/123 222/469/121 201/472/124 +f 202/471/123 220/473/125 221/474/126 +f 204/475/127 220/473/125 203/476/128 +f 204/475/127 218/477/129 219/478/130 +f 206/479/131 218/477/129 205/480/132 +f 206/479/131 216/481/133 217/482/134 +f 208/483/135 216/481/133 207/484/136 +f 208/483/135 214/485/137 215/486/138 +f 210/487/139 214/485/137 209/488/140 +f 210/487/139 212/420/72 213/489/141 +f 161/490/142 18/425/77 17/491/143 +f 161/490/142 193/429/81 194/423/75 +f 163/492/144 193/429/81 162/493/145 +f 163/492/144 191/433/85 192/428/80 +f 165/494/146 191/433/85 164/495/147 +f 165/494/146 189/437/89 190/432/84 +f 167/496/148 189/437/89 166/497/149 +f 167/496/148 187/441/93 188/436/88 +f 169/498/150 187/441/93 168/499/151 +f 169/498/150 185/445/97 186/440/92 +f 171/500/152 185/445/97 170/501/153 +f 171/500/152 183/449/101 184/444/96 +f 173/502/154 183/449/101 172/503/155 +f 173/502/154 181/453/105 182/448/100 +f 175/504/156 181/453/105 174/505/157 +f 175/504/156 179/456/108 180/452/104 +f 177/399/51 179/456/108 176/506/158 +f 22/459/111 127/507/159 15/508/160 +f 127/507/159 227/462/114 128/509/161 +f 227/462/114 129/510/162 128/509/161 +f 129/510/162 225/466/118 130/511/163 +f 225/466/118 131/512/164 130/511/163 +f 131/512/164 223/470/122 132/513/165 +f 223/470/122 133/514/166 132/513/165 +f 133/514/166 221/474/126 134/515/167 +f 221/474/126 135/516/168 134/515/167 +f 135/516/168 219/478/130 136/517/169 +f 219/478/130 137/518/170 136/517/169 +f 137/518/170 217/482/134 138/519/171 +f 217/482/134 139/520/172 138/519/171 +f 139/520/172 215/486/138 140/521/173 +f 215/486/138 141/522/174 140/521/173 +f 141/522/174 213/489/141 142/523/175 +f 213/489/141 143/415/67 142/523/175 +f 15/508/160 160/524/176 16/525/177 +f 128/509/161 160/524/176 127/507/159 +f 128/509/161 158/526/178 159/527/179 +f 130/511/163 158/526/178 129/510/162 +f 130/511/163 156/528/180 157/529/181 +f 132/513/165 156/528/180 131/512/164 +f 132/513/165 154/530/182 155/531/183 +f 134/515/167 154/530/182 133/514/166 +f 134/515/167 152/532/184 153/533/185 +f 136/517/169 152/532/184 135/516/168 +f 136/517/169 150/534/186 151/535/187 +f 138/519/171 150/534/186 137/518/170 +f 138/519/171 148/536/188 149/537/189 +f 140/521/173 148/536/188 139/520/172 +f 140/521/173 146/538/190 147/539/191 +f 142/523/175 146/538/190 141/522/174 +f 142/523/175 144/400/52 145/540/192 +f 9/541/193 126/542/194 10/543/195 +f 94/544/196 126/542/194 93/397/49 +f 94/544/196 124/545/197 125/546/198 +f 96/547/199 124/545/197 95/548/200 +f 96/547/199 122/549/201 123/550/202 +f 98/551/203 122/549/201 97/552/204 +f 98/551/203 120/553/205 121/554/206 +f 100/555/207 120/553/205 99/556/208 +f 100/555/207 118/557/209 119/558/210 +f 102/559/211 118/557/209 101/560/212 +f 102/559/211 116/561/213 117/562/214 +f 104/563/215 116/561/213 103/564/216 +f 104/563/215 114/565/217 115/566/218 +f 106/567/219 114/565/217 105/568/220 +f 106/567/219 112/569/221 113/570/222 +f 108/571/223 112/569/221 107/572/224 +f 108/571/223 110/409/61 111/573/225 +f 1/574/226 126/542/194 41/575/227 +f 126/542/194 40/576/228 41/575/227 +f 40/576/228 124/545/197 39/577/229 +f 124/545/197 38/578/230 39/577/229 +f 38/578/230 122/549/201 37/579/231 +f 122/549/201 36/580/232 37/579/231 +f 36/580/232 120/553/205 35/581/233 +f 120/553/205 34/582/234 35/581/233 +f 34/582/234 118/557/209 33/583/27 +f 118/557/209 32/584/235 33/583/27 +f 32/584/235 116/561/213 31/585/236 +f 116/561/213 30/586/237 31/585/236 +f 30/586/237 114/565/217 29/587/238 +f 114/565/217 28/588/239 29/587/238 +f 28/588/239 112/569/221 27/589/240 +f 112/569/221 26/590/241 27/589/240 +f 26/590/241 110/409/61 25/411/63 +f 211/421/73 5/405/57 24/419/71 +f 211/421/73 91/591/242 92/403/55 +f 209/488/140 91/591/242 210/487/139 +f 209/488/140 89/592/243 90/593/244 +f 207/484/136 89/592/243 208/483/135 +f 207/484/136 87/594/245 88/595/246 +f 205/480/132 87/594/245 206/479/131 +f 205/480/132 85/596/247 86/597/248 +f 203/476/128 85/596/247 204/475/127 +f 203/476/128 83/598/249 84/599/250 +f 201/472/124 83/598/249 202/471/123 +f 201/472/124 81/600/251 82/601/252 +f 199/468/120 81/600/251 200/467/119 +f 199/468/120 79/602/253 80/603/254 +f 197/464/116 79/602/253 198/463/115 +f 197/464/116 77/604/255 78/605/256 +f 195/406/58 77/604/255 196/460/112 +f 7/424/76 76/408/60 8/407/59 +f 76/408/60 60/426/78 77/604/255 +f 60/426/78 78/605/256 77/604/255 +f 78/605/256 62/430/82 79/602/253 +f 62/430/82 80/603/254 79/602/253 +f 80/603/254 64/434/86 81/600/251 +f 64/434/86 82/601/252 81/600/251 +f 82/601/252 66/438/90 83/598/249 +f 66/438/90 84/599/250 83/598/249 +f 84/599/250 68/442/94 85/596/247 +f 68/442/94 86/597/248 85/596/247 +f 86/597/248 70/446/98 87/594/245 +f 70/446/98 88/595/246 87/594/245 +f 88/595/246 72/450/102 89/592/243 +f 72/450/102 90/593/244 89/592/243 +f 90/593/244 74/454/106 91/591/242 +f 74/454/106 92/403/55 91/591/242 +f 4/606/257 160/524/176 58/607/258 +f 160/524/176 57/608/259 58/607/258 +f 57/608/259 158/526/178 56/609/260 +f 158/526/178 55/610/261 56/609/260 +f 55/610/261 156/528/180 54/611/262 +f 156/528/180 53/612/263 54/611/262 +f 53/612/263 154/530/182 52/613/264 +f 154/530/182 51/614/265 52/613/264 +f 51/614/265 152/532/184 50/615/22 +f 152/532/184 49/616/266 50/615/22 +f 49/616/266 150/534/186 48/617/267 +f 150/534/186 47/618/268 48/617/267 +f 47/618/268 148/536/188 46/619/269 +f 148/536/188 45/620/270 46/619/269 +f 45/620/270 146/538/190 44/621/271 +f 146/538/190 43/622/272 44/621/271 +f 43/622/272 144/400/52 42/402/54 +f 17/491/143 109/413/65 161/490/142 +f 109/413/65 162/493/145 161/490/142 +f 162/493/145 107/572/224 163/492/144 +f 107/572/224 164/495/147 163/492/144 +f 164/495/147 105/568/220 165/494/146 +f 105/568/220 166/497/149 165/494/146 +f 166/497/149 103/564/216 167/496/148 +f 103/564/216 168/499/151 167/496/148 +f 168/499/151 101/560/212 169/498/150 +f 101/560/212 170/501/153 169/498/150 +f 170/501/153 99/556/208 171/500/152 +f 99/556/208 172/503/155 171/500/152 +f 172/503/155 97/552/204 173/502/154 +f 97/552/204 174/505/157 173/502/154 +f 174/505/157 95/548/200 175/504/156 +f 95/548/200 176/506/158 175/504/156 +f 176/506/158 93/397/49 177/399/51 +f 238/52/273 239/623/274 237/624/275 +f 240/56/276 241/625/277 239/623/274 +f 242/57/278 243/626/279 241/625/277 +f 243/627/279 246/49/280 245/628/281 +f 245/628/281 248/74/282 247/629/283 +f 247/629/283 250/70/284 249/630/285 +f 250/70/284 251/631/286 249/630/285 +f 252/68/287 253/632/288 251/631/286 +f 254/65/289 255/633/290 253/632/288 +f 255/634/290 258/63/291 257/635/292 +f 257/635/292 260/60/293 259/636/294 +f 259/636/294 238/52/273 237/624/275 +f 263/62/295 276/75/296 264/58/297 +f 270/64/298 283/80/299 271/61/300 +f 267/73/301 280/81/302 268/71/303 +f 264/50/297 277/86/304 265/51/305 +f 271/61/300 284/88/306 272/53/307 +f 262/54/308 273/89/309 261/55/310 +f 268/71/303 281/92/311 269/69/312 +f 265/51/305 278/95/313 266/72/314 +f 272/53/307 274/96/315 262/54/308 +f 261/55/310 275/97/316 263/62/295 +f 269/69/312 282/98/317 270/66/298 +f 266/72/314 279/100/318 267/73/301 +f 290/94/319 303/101/320 291/82/321 +f 287/76/322 300/106/323 288/77/324 +f 294/349/325 307/107/326 295/79/327 +f 291/82/321 304/111/328 292/83/329 +f 288/350/324 301/112/330 289/85/331 +f 295/79/327 308/115/332 296/87/333 +f 286/90/334 297/119/335 285/91/336 +f 292/83/329 305/121/337 293/93/338 +f 289/85/331 302/122/339 290/94/319 +f 296/87/333 298/117/340 286/90/334 +f 285/91/336 299/104/341 287/76/322 +f 293/93/338 306/126/342 294/99/325 +f 317/120/312 330/637/343 318/125/298 +f 315/103/301 326/638/344 327/639/345 +f 311/124/295 324/640/346 312/105/297 +f 318/108/298 331/641/347 319/109/300 +f 315/103/301 328/642/348 316/110/303 +f 312/113/297 325/643/349 313/114/305 +f 319/109/300 332/644/350 320/116/307 +f 310/123/308 321/645/351 309/118/310 +f 316/110/303 329/646/352 317/120/312 +f 313/114/305 326/638/344 314/102/314 +f 320/116/307 322/647/353 310/123/308 +f 309/118/310 323/648/354 311/124/295 +f 93/397/49 9/541/193 20/398/50 +f 144/400/52 13/649/355 3/401/53 +f 92/403/55 75/422/74 6/404/56 +f 195/406/58 21/457/109 8/407/59 +f 110/409/61 11/650/356 2/410/62 +f 12/412/64 11/650/356 110/409/61 +f 14/414/66 13/649/355 144/400/52 +f 143/415/67 212/420/72 23/416/68 +f 177/399/51 20/398/50 19/417/69 +f 24/419/71 23/416/68 212/420/72 +f 178/418/70 19/417/69 6/404/56 +f 194/423/75 59/427/79 7/424/76 +f 194/423/75 193/429/81 60/426/78 +f 192/428/80 61/431/83 60/426/78 +f 192/428/80 191/433/85 62/430/82 +f 190/432/84 63/435/87 62/430/82 +f 190/432/84 189/437/89 64/434/86 +f 188/436/88 65/439/91 64/434/86 +f 188/436/88 187/441/93 66/438/90 +f 186/440/92 67/443/95 66/438/90 +f 186/440/92 185/445/97 68/442/94 +f 184/444/96 69/447/99 68/442/94 +f 184/444/96 183/449/101 70/446/98 +f 182/448/100 71/451/103 70/446/98 +f 182/448/100 181/453/105 72/450/102 +f 180/452/104 73/455/107 72/450/102 +f 180/452/104 179/456/108 74/454/106 +f 178/418/70 75/422/74 74/454/106 +f 21/457/109 195/406/58 228/458/110 +f 196/460/112 227/462/114 228/458/110 +f 196/460/112 197/464/116 226/461/113 +f 198/463/115 225/466/118 226/461/113 +f 198/463/115 199/468/120 224/465/117 +f 200/467/119 223/470/122 224/465/117 +f 200/467/119 201/472/124 222/469/121 +f 202/471/123 221/474/126 222/469/121 +f 202/471/123 203/476/128 220/473/125 +f 204/475/127 219/478/130 220/473/125 +f 204/475/127 205/480/132 218/477/129 +f 206/479/131 217/482/134 218/477/129 +f 206/479/131 207/484/136 216/481/133 +f 208/483/135 215/486/138 216/481/133 +f 208/483/135 209/488/140 214/485/137 +f 210/487/139 213/489/141 214/485/137 +f 210/487/139 211/421/73 212/420/72 +f 161/490/142 194/423/75 18/425/77 +f 161/490/142 162/493/145 193/429/81 +f 163/492/144 192/428/80 193/429/81 +f 163/492/144 164/495/147 191/433/85 +f 165/494/146 190/432/84 191/433/85 +f 165/494/146 166/497/149 189/437/89 +f 167/496/148 188/436/88 189/437/89 +f 167/496/148 168/499/151 187/441/93 +f 169/498/150 186/440/92 187/441/93 +f 169/498/150 170/501/153 185/445/97 +f 171/500/152 184/444/96 185/445/97 +f 171/500/152 172/503/155 183/449/101 +f 173/502/154 182/448/100 183/449/101 +f 173/502/154 174/505/157 181/453/105 +f 175/504/156 180/452/104 181/453/105 +f 175/504/156 176/506/158 179/456/108 +f 177/399/51 178/418/70 179/456/108 +f 22/459/111 228/458/110 127/507/159 +f 127/507/159 228/458/110 227/462/114 +f 227/462/114 226/461/113 129/510/162 +f 129/510/162 226/461/113 225/466/118 +f 225/466/118 224/465/117 131/512/164 +f 131/512/164 224/465/117 223/470/122 +f 223/470/122 222/469/121 133/514/166 +f 133/514/166 222/469/121 221/474/126 +f 221/474/126 220/473/125 135/516/168 +f 135/516/168 220/473/125 219/478/130 +f 219/478/130 218/477/129 137/518/170 +f 137/518/170 218/477/129 217/482/134 +f 217/482/134 216/481/133 139/520/172 +f 139/520/172 216/481/133 215/486/138 +f 215/486/138 214/485/137 141/522/174 +f 141/522/174 214/485/137 213/489/141 +f 213/489/141 212/420/72 143/415/67 +f 15/508/160 127/507/159 160/524/176 +f 128/509/161 159/527/179 160/524/176 +f 128/509/161 129/510/162 158/526/178 +f 130/511/163 157/529/181 158/526/178 +f 130/511/163 131/512/164 156/528/180 +f 132/513/165 155/531/183 156/528/180 +f 132/513/165 133/514/166 154/530/182 +f 134/515/167 153/533/185 154/530/182 +f 134/515/167 135/516/168 152/532/184 +f 136/517/169 151/535/187 152/532/184 +f 136/517/169 137/518/170 150/534/186 +f 138/519/171 149/537/189 150/534/186 +f 138/519/171 139/520/172 148/536/188 +f 140/521/173 147/539/191 148/536/188 +f 140/521/173 141/522/174 146/538/190 +f 142/523/175 145/540/192 146/538/190 +f 142/523/175 143/415/67 144/400/52 +f 9/541/193 93/397/49 126/542/194 +f 94/544/196 125/546/198 126/542/194 +f 94/544/196 95/548/200 124/545/197 +f 96/547/199 123/550/202 124/545/197 +f 96/547/199 97/552/204 122/549/201 +f 98/551/203 121/554/206 122/549/201 +f 98/551/203 99/556/208 120/553/205 +f 100/555/207 119/558/210 120/553/205 +f 100/555/207 101/560/212 118/557/209 +f 102/559/211 117/562/214 118/557/209 +f 102/559/211 103/564/216 116/561/213 +f 104/563/215 115/566/218 116/561/213 +f 104/563/215 105/568/220 114/565/217 +f 106/567/219 113/570/222 114/565/217 +f 106/567/219 107/572/224 112/569/221 +f 108/571/223 111/573/225 112/569/221 +f 108/571/223 109/413/65 110/409/61 +f 1/574/226 10/543/195 126/542/194 +f 126/542/194 125/546/198 40/576/228 +f 40/576/228 125/546/198 124/545/197 +f 124/545/197 123/550/202 38/578/230 +f 38/578/230 123/550/202 122/549/201 +f 122/549/201 121/554/206 36/580/232 +f 36/580/232 121/554/206 120/553/205 +f 120/553/205 119/558/210 34/582/234 +f 34/582/234 119/558/210 118/557/209 +f 118/557/209 117/562/214 32/584/235 +f 32/584/235 117/562/214 116/561/213 +f 116/561/213 115/566/218 30/586/237 +f 30/586/237 115/566/218 114/565/217 +f 114/565/217 113/570/222 28/588/239 +f 28/588/239 113/570/222 112/569/221 +f 112/569/221 111/573/225 26/590/241 +f 26/590/241 111/573/225 110/409/61 +f 211/421/73 92/403/55 5/405/57 +f 211/421/73 210/487/139 91/591/242 +f 209/488/140 90/593/244 91/591/242 +f 209/488/140 208/483/135 89/592/243 +f 207/484/136 88/595/246 89/592/243 +f 207/484/136 206/479/131 87/594/245 +f 205/480/132 86/597/248 87/594/245 +f 205/480/132 204/475/127 85/596/247 +f 203/476/128 84/599/250 85/596/247 +f 203/476/128 202/471/123 83/598/249 +f 201/472/124 82/601/252 83/598/249 +f 201/472/124 200/467/119 81/600/251 +f 199/468/120 80/603/254 81/600/251 +f 199/468/120 198/463/115 79/602/253 +f 197/464/116 78/605/256 79/602/253 +f 197/464/116 196/460/112 77/604/255 +f 195/406/58 76/408/60 77/604/255 +f 7/424/76 59/427/79 76/408/60 +f 76/408/60 59/427/79 60/426/78 +f 60/426/78 61/431/83 78/605/256 +f 78/605/256 61/431/83 62/430/82 +f 62/430/82 63/435/87 80/603/254 +f 80/603/254 63/435/87 64/434/86 +f 64/434/86 65/439/91 82/601/252 +f 82/601/252 65/439/91 66/438/90 +f 66/438/90 67/443/95 84/599/250 +f 84/599/250 67/443/95 68/442/94 +f 68/442/94 69/447/99 86/597/248 +f 86/597/248 69/447/99 70/446/98 +f 70/446/98 71/451/103 88/595/246 +f 88/595/246 71/451/103 72/450/102 +f 72/450/102 73/455/107 90/593/244 +f 90/593/244 73/455/107 74/454/106 +f 74/454/106 75/422/74 92/403/55 +f 4/606/257 16/525/177 160/524/176 +f 160/524/176 159/527/179 57/608/259 +f 57/608/259 159/527/179 158/526/178 +f 158/526/178 157/529/181 55/610/261 +f 55/610/261 157/529/181 156/528/180 +f 156/528/180 155/531/183 53/612/263 +f 53/612/263 155/531/183 154/530/182 +f 154/530/182 153/533/185 51/614/265 +f 51/614/265 153/533/185 152/532/184 +f 152/532/184 151/535/187 49/616/266 +f 49/616/266 151/535/187 150/534/186 +f 150/534/186 149/537/189 47/618/268 +f 47/618/268 149/537/189 148/536/188 +f 148/536/188 147/539/191 45/620/270 +f 45/620/270 147/539/191 146/538/190 +f 146/538/190 145/540/192 43/622/272 +f 43/622/272 145/540/192 144/400/52 +f 17/491/143 12/412/64 109/413/65 +f 109/413/65 108/571/223 162/493/145 +f 162/493/145 108/571/223 107/572/224 +f 107/572/224 106/567/219 164/495/147 +f 164/495/147 106/567/219 105/568/220 +f 105/568/220 104/563/215 166/497/149 +f 166/497/149 104/563/215 103/564/216 +f 103/564/216 102/559/211 168/499/151 +f 168/499/151 102/559/211 101/560/212 +f 101/560/212 100/555/207 170/501/153 +f 170/501/153 100/555/207 99/556/208 +f 99/556/208 98/551/203 172/503/155 +f 172/503/155 98/551/203 97/552/204 +f 97/552/204 96/547/199 174/505/157 +f 174/505/157 96/547/199 95/548/200 +f 95/548/200 94/544/196 176/506/158 +f 176/506/158 94/544/196 93/397/49 +f 238/52/273 240/56/276 239/623/274 +f 240/56/276 242/57/278 241/625/277 +f 242/57/278 244/59/357 243/626/279 +f 243/627/279 244/347/357 246/49/280 +f 245/628/281 246/49/280 248/74/282 +f 247/629/283 248/74/282 250/70/284 +f 250/70/284 252/68/287 251/631/286 +f 252/68/287 254/65/289 253/632/288 +f 254/65/289 256/67/358 255/633/290 +f 255/634/290 256/348/358 258/63/291 +f 257/635/292 258/63/291 260/60/293 +f 259/636/294 260/60/293 238/52/273 +f 263/62/295 275/97/316 276/75/296 +f 270/64/298 282/78/317 283/80/299 +f 267/73/301 279/100/318 280/81/302 +f 264/50/297 276/84/296 277/86/304 +f 271/61/300 283/80/299 284/88/306 +f 262/54/308 274/96/315 273/89/309 +f 268/71/303 280/81/302 281/92/311 +f 265/51/305 277/86/304 278/95/313 +f 272/53/307 284/88/306 274/96/315 +f 261/55/310 273/89/309 275/97/316 +f 269/69/312 281/92/311 282/98/317 +f 266/72/314 278/95/313 279/100/318 +f 290/94/319 302/122/339 303/101/320 +f 287/76/322 299/104/341 300/106/323 +f 294/349/325 306/351/342 307/107/326 +f 291/82/321 303/101/320 304/111/328 +f 288/350/324 300/352/323 301/112/330 +f 295/79/327 307/107/326 308/115/332 +f 286/90/334 298/117/340 297/119/335 +f 292/83/329 304/111/328 305/121/337 +f 289/85/331 301/112/330 302/122/339 +f 296/87/333 308/115/332 298/117/340 +f 285/91/336 297/119/335 299/104/341 +f 293/93/338 305/121/337 306/126/342 +f 317/120/312 329/646/352 330/637/343 +f 315/103/301 314/102/314 326/638/344 +f 311/124/295 323/648/354 324/640/346 +f 318/108/298 330/651/343 331/641/347 +f 315/103/301 327/639/345 328/642/348 +f 312/113/297 324/652/346 325/643/349 +f 319/109/300 331/641/347 332/644/350 +f 310/123/308 322/647/353 321/645/351 +f 316/110/303 328/642/348 329/646/352 +f 313/114/305 325/643/349 326/638/344 +f 320/116/307 332/644/350 322/647/353 +f 309/118/310 321/645/351 323/648/354 diff --git a/src/main/resources/assets/hbm/textures/gui/centrifuge_gas.png b/src/main/resources/assets/hbm/textures/gui/centrifuge_gas.png index 6621f4ea6..79e0723bf 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/centrifuge_gas.png and b/src/main/resources/assets/hbm/textures/gui/centrifuge_gas.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_radiolysis.png b/src/main/resources/assets/hbm/textures/gui/gui_radiolysis.png new file mode 100644 index 000000000..f3affbe51 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/gui_radiolysis.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_radiolysis.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_radiolysis.png new file mode 100644 index 000000000..fdbbf5f75 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_radiolysis.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pellet_rtg_cobalt.png b/src/main/resources/assets/hbm/textures/items/pellet_rtg_cobalt.png new file mode 100644 index 000000000..2b422f3a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pellet_rtg_cobalt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pellet_rtg_depleted.nickel.png b/src/main/resources/assets/hbm/textures/items/pellet_rtg_depleted.nickel.png new file mode 100644 index 000000000..4947f0e29 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pellet_rtg_depleted.nickel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/radiolysis.png b/src/main/resources/assets/hbm/textures/models/radiolysis.png new file mode 100644 index 000000000..abb888335 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/radiolysis.png differ