Kill off wires for the last time, fix up jetpacks

This commit is contained in:
Aidan Brady 2013-12-05 21:10:15 -05:00
parent fb350e43f0
commit c3a985f273
39 changed files with 76 additions and 3455 deletions

View file

@ -158,6 +158,8 @@ public class CommonProxy
Mekanism.machineBlock2ID = Mekanism.configuration.getBlock("MachineBlock2", 3008).getInt();
Mekanism.osmiumGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "OsmiumGenerationEnabled", true).getBoolean(true);
Mekanism.copperGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "CopperGenerationEnabled", true).getBoolean(true);
Mekanism.tinGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "TinGenerationEnabled", true).getBoolean(true);
Mekanism.disableBCSteelCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCSteelCrafting", false).getBoolean(true);
Mekanism.disableBCBronzeCrafting = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "DisableBCBronzeCrafting", false).getBoolean(true);
Mekanism.updateNotifications = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "UpdateNotifications", true).getBoolean(true);

View file

@ -214,7 +214,7 @@ public class Mekanism
public static Item NetworkReader;
public static Item WalkieTalkie;
public static Item ItemProxy;
public static Item Jetpack;
public static ItemJetpack Jetpack;
//Blocks
public static Block BasicBlock;
@ -235,6 +235,8 @@ public class Mekanism
//General Configuration
public static boolean osmiumGenerationEnabled = true;
public static boolean copperGenerationEnabled = true;
public static boolean tinGenerationEnabled = true;
public static boolean disableBCBronzeCrafting = true;
public static boolean disableBCSteelCrafting = true;
public static boolean updateNotifications = true;
@ -467,6 +469,9 @@ public class Mekanism
"GCG", "tET", "GIG", Character.valueOf('G'), Block.glass, Character.valueOf('C'), "circuitBasic", Character.valueOf('t'), MekanismUtils.getEmptyGasTank(), Character.valueOf('E'), EnergyTablet.getUnchargedItem(),
Character.valueOf('T'), new ItemStack(BasicBlock, 1, 9), Character.valueOf('I'), new ItemStack(BasicBlock, 1, 8)
}));
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(Jetpack.getEmptyItem(), new Object[] {
"SCS", "TGT", " T ", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), "circuitBasic", Character.valueOf('T'), "ingotTin", Character.valueOf('G'), MekanismUtils.getEmptyGasTank()
}));
for(RecipeType type : RecipeType.values())
{
@ -554,15 +559,15 @@ public class Mekanism
{
//Declarations
configuration.load();
ElectricBow = (ItemElectricBow) new ItemElectricBow(configuration.getItem("ElectricBow", 11200).getInt()).setUnlocalizedName("ElectricBow");
ElectricBow = (ItemElectricBow)new ItemElectricBow(configuration.getItem("ElectricBow", 11200).getInt()).setUnlocalizedName("ElectricBow");
//OPEN 11201-11203
Dust = new ItemDust(configuration.getItem("Dust", 11204).getInt()-256);
Ingot = new ItemIngot(configuration.getItem("Ingot", 11205).getInt()-256);
EnergyTablet = (ItemEnergized) new ItemEnergized(configuration.getItem("EnergyTablet", 11206).getInt(), 1000000, 120).setUnlocalizedName("EnergyTablet");
EnergyTablet = (ItemEnergized)new ItemEnergized(configuration.getItem("EnergyTablet", 11206).getInt(), 1000000, 120).setUnlocalizedName("EnergyTablet");
SpeedUpgrade = new ItemMachineUpgrade(configuration.getItem("SpeedUpgrade", 11207).getInt()).setUnlocalizedName("SpeedUpgrade");
EnergyUpgrade = new ItemMachineUpgrade(configuration.getItem("EnergyUpgrade", 11208).getInt()).setUnlocalizedName("EnergyUpgrade");
Robit = (ItemRobit) new ItemRobit(configuration.getItem("Robit", 11209).getInt()).setUnlocalizedName("Robit");
AtomicDisassembler = (ItemAtomicDisassembler) new ItemAtomicDisassembler(configuration.getItem("AtomicDisassembler", 11210).getInt()).setUnlocalizedName("AtomicDisassembler");
Robit = (ItemRobit)new ItemRobit(configuration.getItem("Robit", 11209).getInt()).setUnlocalizedName("Robit");
AtomicDisassembler = (ItemAtomicDisassembler)new ItemAtomicDisassembler(configuration.getItem("AtomicDisassembler", 11210).getInt()).setUnlocalizedName("AtomicDisassembler");
AtomicCore = new ItemMekanism(configuration.getItem("AtomicCore", 11211).getInt()).setUnlocalizedName("AtomicCore");
EnrichedAlloy = new ItemMekanism(configuration.getItem("EnrichedAlloy", 11212).getInt()).setUnlocalizedName("EnrichedAlloy");
ItemProxy = new ItemProxy(configuration.getItem("ItemProxy", 11213).getInt()).setUnlocalizedName("ItemProxy");
@ -575,7 +580,7 @@ public class Mekanism
DirtyDust = new ItemDirtyDust(configuration.getItem("DirtyDust", 11220).getInt()-256);
Configurator = new ItemConfigurator(configuration.getItem("Configurator", 11221).getInt()).setUnlocalizedName("Configurator");
NetworkReader = new ItemNetworkReader(configuration.getItem("NetworkReader", 11222).getInt()).setUnlocalizedName("NetworkReader");
Jetpack = new ItemJetpack(configuration.getItem("Jetpack", 11223).getInt()).setUnlocalizedName("Jetpack");
Jetpack = (ItemJetpack)new ItemJetpack(configuration.getItem("Jetpack", 11223).getInt()).setUnlocalizedName("Jetpack");
WalkieTalkie = new ItemWalkieTalkie(configuration.getItem("WalkieTalkie", 11224).getInt()).setUnlocalizedName("WalkieTalkie");
configuration.save();

View file

@ -18,28 +18,37 @@ public class OreHandler implements IWorldGenerator
{
if(!(chunkGenerator instanceof ChunkProviderHell) && !(chunkGenerator instanceof ChunkProviderEnd))
{
for(int i = 0; i < Mekanism.osmiumGenerationAmount; i++)
if(Mekanism.osmiumGenerationEnabled)
{
int randPosX = (chunkX*16) + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = (chunkZ*16) + random.nextInt(16);
new WorldGenMinable(Mekanism.oreBlockID, 0, 8, Block.stone.blockID).generate(world, random, randPosX, randPosY, randPosZ);
for(int i = 0; i < Mekanism.osmiumGenerationAmount; i++)
{
int randPosX = (chunkX*16) + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = (chunkZ*16) + random.nextInt(16);
new WorldGenMinable(Mekanism.oreBlockID, 0, 8, Block.stone.blockID).generate(world, random, randPosX, randPosY, randPosZ);
}
}
for(int i = 0; i < Mekanism.copperGenerationAmount; i++)
if(Mekanism.copperGenerationEnabled)
{
int randPosX = (chunkX*16) + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = (chunkZ*16) + random.nextInt(16);
new WorldGenMinable(Mekanism.oreBlockID, 1, 8, Block.stone.blockID).generate(world, random, randPosX, randPosY, randPosZ);
for(int i = 0; i < Mekanism.copperGenerationAmount; i++)
{
int randPosX = (chunkX*16) + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = (chunkZ*16) + random.nextInt(16);
new WorldGenMinable(Mekanism.oreBlockID, 1, 8, Block.stone.blockID).generate(world, random, randPosX, randPosY, randPosZ);
}
}
for(int i = 0; i < Mekanism.tinGenerationAmount; i++)
if(Mekanism.tinGenerationEnabled)
{
int randPosX = (chunkX*16) + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = (chunkZ*16) + random.nextInt(16);
new WorldGenMinable(Mekanism.oreBlockID, 2, 8, Block.stone.blockID).generate(world, random, randPosX, randPosY, randPosZ);
for(int i = 0; i < Mekanism.tinGenerationAmount; i++)
{
int randPosX = (chunkX*16) + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = (chunkZ*16) + random.nextInt(16);
new WorldGenMinable(Mekanism.oreBlockID, 2, 8, Block.stone.blockID).generate(world, random, randPosX, randPosY, randPosZ);
}
}
}
}

View file

@ -12,6 +12,7 @@ import mekanism.client.render.ModelCustomArmor.ArmorModel;
import mekanism.common.Mekanism;
import mekanism.common.util.MekanismUtils;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -31,6 +32,8 @@ public class ItemJetpack extends ItemArmor implements IGasItem
{
super(id, EnumHelper.addArmorMaterial("JETPACK", 0, new int[] {0, 0, 0, 0}, 0), 0, 1);
setCreativeTab(Mekanism.tabMekanism);
setMaxDamage(100);
setNoRepair();
}
@Override
@ -224,6 +227,30 @@ public class ItemJetpack extends ItemArmor implements IGasItem
}
}
public ItemStack getEmptyItem()
{
ItemStack empty = new ItemStack(this);
setGas(null, empty);
empty.setItemDamage(100);
return empty;
}
@Override
public void getSubItems(int i, CreativeTabs tabs, List list)
{
ItemStack empty = new ItemStack(this);
setGas(null, empty);
empty.setItemDamage(100);
list.add(empty);
for(Gas type : GasRegistry.getRegisteredGasses())
{
ItemStack filled = new ItemStack(this);
setGas(new GasStack(type, ((IGasItem)filled.getItem()).getMaxGas(filled)), filled);
list.add(filled);
}
}
public static enum JetpackMode
{
NORMAL("tooltip.jetpack.regular", EnumColor.DARK_GREEN),

View file

@ -7,18 +7,14 @@ import mekanism.induction.client.render.RenderBattery;
import mekanism.induction.client.render.RenderEMContractor;
import mekanism.induction.client.render.RenderMultimeter;
import mekanism.induction.client.render.RenderTesla;
import mekanism.induction.client.render.RenderWire;
import mekanism.induction.common.InductionCommonProxy;
import mekanism.induction.common.tileentity.TileEntityBattery;
import mekanism.induction.common.tileentity.TileEntityEMContractor;
import mekanism.induction.common.tileentity.TileEntityMultimeter;
import mekanism.induction.common.tileentity.TileEntityTesla;
import mekanism.induction.common.tileentity.TileEntityWire;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import universalelectricity.core.vector.Vector3;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.registry.ClientRegistry;
@ -44,7 +40,6 @@ public class InductionClientProxy extends InductionCommonProxy
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultimeter.class, new RenderMultimeter());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEMContractor.class, new RenderEMContractor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBattery.class, new RenderBattery());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWire.class, new RenderWire());
}
@Override

View file

@ -1,223 +0,0 @@
package mekanism.induction.client.render;
import java.nio.FloatBuffer;
import java.util.Map;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import mekanism.induction.common.MekanismInduction;
import mekanism.induction.common.wire.PartConductor;
import mekanism.induction.common.wire.PartWire;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.util.Icon;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.ForgeDirection;
import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3;
import codechicken.lib.colour.Colour;
import codechicken.lib.colour.ColourRGBA;
import codechicken.lib.lighting.LightModel;
import codechicken.lib.render.CCModel;
import codechicken.lib.render.CCRenderState;
import codechicken.lib.render.ColourMultiplier;
import codechicken.lib.render.IconTransformation;
import codechicken.lib.render.TextureUtils;
import codechicken.lib.vec.Matrix4;
import codechicken.lib.vec.Rotation;
import codechicken.lib.vec.Transformation;
import codechicken.lib.vec.Translation;
import codechicken.lib.vec.VariableTransformation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
/**
*
* @author unpairedbracket
*
*/
@SideOnly(Side.CLIENT)
public class RenderPartWire
{
private static final ResourceLocation WIRE_SHINE = MekanismUtils.getResource(ResourceType.RENDER, "white.png");
public static final Map<String, CCModel> models;
public static final Map<String, CCModel> shinyModels;
public static Icon wireIcon;
public static Icon insulationIcon;
public static Icon breakIcon;
public static FloatBuffer location = BufferUtils.createFloatBuffer(4);
public static FloatBuffer specular = BufferUtils.createFloatBuffer(4);
public static FloatBuffer zero = BufferUtils.createFloatBuffer(4);
public static FloatBuffer defaultAmbient = BufferUtils.createFloatBuffer(4);
public static final RenderPartWire INSTANCE = new RenderPartWire();
static
{
models = CCModel.parseObjModels(MekanismUtils.getResource(ResourceType.MODEL, "wire.obj"), 7, new InvertX());
for(CCModel c : models.values())
{
c.apply(new Translation(.5, 0, .5));
c.computeLighting(LightModel.standardLightModel);
c.shrinkUVs(0.0005);
}
shinyModels = CCModel.parseObjModels(MekanismUtils.getResource(ResourceType.MODEL, "wireShine.obj"), 7, new InvertX());
for(CCModel c : shinyModels.values())
{
c.apply(new Translation(.5, 0, .5));
c.computeLighting(LightModel.standardLightModel);
c.shrinkUVs(0.0005);
}
loadBuffer(location, 0, 0, 0, 1);
loadBuffer(specular, 1, 1, 1, 1);
loadBuffer(zero, 0, 0, 0, 0);
loadBuffer(defaultAmbient, 0.4F, 0.4F, 0.4F, 1);
GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, zero);
GL11.glLight(GL11.GL_LIGHT3, GL11.GL_SPECULAR, specular);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_SPECULAR, specular);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT, zero);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_DIFFUSE, zero);
GL11.glMaterialf(GL11.GL_FRONT, GL11.GL_SHININESS, 128F);
}
public static void loadBuffer(FloatBuffer buffer, float... src)
{
buffer.clear();
buffer.put(src);
buffer.flip();
}
public void renderShine(PartWire wire, double x, double y, double z, float f)
{
if(wire != null)
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_LIGHT0);
GL11.glDisable(GL11.GL_LIGHT1);
GL11.glEnable(GL11.GL_LIGHT3);
GL11.glLight(GL11.GL_LIGHT3, GL11.GL_POSITION, location);
GL11.glTranslatef((float)x, (float)y, (float)z);
GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, zero);
CCRenderState.reset();
CCRenderState.useNormals(true);
CCRenderState.changeTexture(WIRE_SHINE);
CCRenderState.startDrawing(7);
renderSideShine(ForgeDirection.UNKNOWN, wire);
byte renderSides = wire.getAllCurrentConnections();
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(PartConductor.connectionMapContainsSide(renderSides, side))
{
renderSideShine(side, wire);
}
}
CCRenderState.draw();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_LIGHT0);
GL11.glEnable(GL11.GL_LIGHT1);
GL11.glDisable(GL11.GL_LIGHT3);
GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, defaultAmbient);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glPopMatrix();
}
}
public static void registerIcons(IconRegister iconReg)
{
wireIcon = iconReg.registerIcon("mekanism:render/Wire");
insulationIcon = iconReg.registerIcon("mekanism:render/" + "Insulation" + (MekanismInduction.LO_FI_INSULATION ? "Tiny" : ""));
breakIcon = iconReg.registerIcon("mekanism:Wire");
}
public void renderStatic(PartWire wire)
{
TextureUtils.bindAtlas(0);
CCRenderState.reset();
CCRenderState.useModelColours(true);
CCRenderState.setBrightness(wire.world(), wire.x(), wire.y(), wire.z());
renderSide(ForgeDirection.UNKNOWN, wire);
byte renderSides = wire.getAllCurrentConnections();
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(PartConductor.connectionMapContainsSide(renderSides, side))
{
renderSide(side, wire);
}
}
}
public void renderSide(ForgeDirection side, PartWire wire)
{
String name = side.name().toLowerCase();
name = name.equals("unknown") ? "center" : name;
Vector3 materialColour = wire.getMaterial().color;
Colour colour = new ColourRGBA(materialColour.x, materialColour.y, materialColour.z, 1);
renderPart(wireIcon, models.get(name), wire.x(), wire.y(), wire.z(), colour);
if(wire.isInsulated())
{
Vector3 vecColour = MekanismInduction.DYE_COLORS[wire.dyeID];
Colour insulationColour = new ColourRGBA(vecColour.x, vecColour.y, vecColour.z, 1);
renderPart(insulationIcon, models.get(name + "Insulation"), wire.x(), wire.y(), wire.z(), insulationColour);
}
}
public void renderSideShine(ForgeDirection side, PartWire wire)
{
String name = side.name().toLowerCase();
name = name.equals("unknown") ? "center" : name;
Vector3 materialColour = wire.getMaterial().color;
renderPartShine(shinyModels.get(name));
}
public void renderPart(Icon icon, CCModel cc, double x, double y, double z, Colour colour)
{
cc.render(0, cc.verts.length, Rotation.sideOrientation(0, Rotation.rotationTo(0, 2)).at(codechicken.lib.vec.Vector3.center).with(new Translation(x, y, z)), new IconTransformation(icon), new ColourMultiplier(colour));
}
public void renderPartShine(CCModel cc)
{
cc.render(null, 0, 0);
}
public static class InvertX extends VariableTransformation
{
public InvertX()
{
super(new Matrix4(1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1));
}
@Override
public Transformation inverse()
{
return this;
}
@Override
public void apply(codechicken.lib.vec.Vector3 vec)
{
vec.x = -vec.x;
}
}
}

View file

@ -1,132 +0,0 @@
package mekanism.induction.client.render;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import mekanism.induction.client.model.ModelInsulation;
import mekanism.induction.client.model.ModelWire;
import mekanism.induction.common.MekanismInduction;
import mekanism.induction.common.tileentity.TileEntityWire;
import mekanism.induction.common.wire.EnumWireMaterial;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderWire extends TileEntitySpecialRenderer
{
private static final ResourceLocation WIRE_TEXTURE = MekanismUtils.getResource(ResourceType.TEXTURE_BLOCKS, "render/WireSimple.png");
private static final ResourceLocation INSULATION_TEXTURE = MekanismUtils.getResource(ResourceType.TEXTURE_BLOCKS, "render/InsulationSimple.png");
public static final ModelWire WIRE_MODEL = new ModelWire();
public static final ModelInsulation INSULATION_MODEL = new ModelInsulation();
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick)
{
renderAModelAt((TileEntityWire)tileEntity, x, y, z, partialTick);
}
public void renderAModelAt(TileEntityWire tileEntity, double x, double y, double z, float partialTick)
{
if(tileEntity != null)
{
GL11.glPushMatrix();
GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F);
GL11.glScalef(1, -1, -1);
EnumWireMaterial material = tileEntity.getMaterial();
FMLClientHandler.instance().getClient().renderEngine.bindTexture(WIRE_TEXTURE);
GL11.glColor4d(material.color.x, material.color.y, material.color.z, 1);
tileEntity.adjacentConnections = null;
TileEntity[] adjacentConnections = tileEntity.getAdjacentConnections();
if(adjacentConnections != null)
{
if(adjacentConnections[0] != null)
{
WIRE_MODEL.renderBottom();
}
if(adjacentConnections[1] != null)
{
WIRE_MODEL.renderTop();
}
if(adjacentConnections[2] != null)
{
WIRE_MODEL.renderBack();
}
if(adjacentConnections[3] != null)
{
WIRE_MODEL.renderFront();
}
if(adjacentConnections[4] != null)
{
WIRE_MODEL.renderLeft();
}
if(adjacentConnections[5] != null)
{
WIRE_MODEL.renderRight();
}
}
WIRE_MODEL.renderMiddle();
if(tileEntity.isInsulated)
{
FMLClientHandler.instance().getClient().renderEngine.bindTexture(INSULATION_TEXTURE);
Vector3 insulationColor = MekanismInduction.DYE_COLORS[tileEntity.dyeID];
GL11.glColor4d(insulationColor.x, insulationColor.y, insulationColor.z, 1);
if(adjacentConnections != null)
{
if(adjacentConnections[0] != null)
{
INSULATION_MODEL.renderBottom(0.0625f);
}
if(adjacentConnections[1] != null)
{
INSULATION_MODEL.renderTop(0.0625f);
}
if(adjacentConnections[2] != null)
{
INSULATION_MODEL.renderBack(0.0625f);
}
if(adjacentConnections[3] != null)
{
INSULATION_MODEL.renderFront(0.0625f);
}
if(adjacentConnections[4] != null)
{
INSULATION_MODEL.renderLeft(0.0625f);
}
if(adjacentConnections[5] != null)
{
INSULATION_MODEL.renderRight(0.0625f);
}
}
INSULATION_MODEL.renderMiddle(0.0625f);
}
GL11.glPopMatrix();
}
}
}

View file

@ -26,8 +26,6 @@ public class InductionCommonProxy implements IGuiHandler
{
Mekanism.configuration.load();
MekanismInduction.SOUND_FXS = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "Tesla Sound FXs", MekanismInduction.SOUND_FXS).getBoolean(MekanismInduction.SOUND_FXS);
MekanismInduction.LO_FI_INSULATION = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "Use lo-fi insulation texture", MekanismInduction.LO_FI_INSULATION).getBoolean(MekanismInduction.LO_FI_INSULATION);
MekanismInduction.SHINY_SILVER = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "Shiny silver wires", MekanismInduction.SHINY_SILVER).getBoolean(MekanismInduction.SHINY_SILVER);
MekanismInduction.MAX_CONTRACTOR_DISTANCE = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "Max EM Contractor Path", MekanismInduction.MAX_CONTRACTOR_DISTANCE).getInt(MekanismInduction.MAX_CONTRACTOR_DISTANCE);
TileEntityEMContractor.ACCELERATION = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "Contractor Item Acceleration", TileEntityEMContractor.ACCELERATION).getDouble(TileEntityEMContractor.ACCELERATION);

View file

@ -1,9 +1,5 @@
package mekanism.induction.common;
import ic2.api.item.Items;
import java.util.Map;
import mekanism.common.IModule;
import mekanism.common.Mekanism;
import mekanism.common.MekanismRecipe;
@ -14,31 +10,20 @@ import mekanism.induction.common.block.BlockBattery;
import mekanism.induction.common.block.BlockEMContractor;
import mekanism.induction.common.block.BlockMultimeter;
import mekanism.induction.common.block.BlockTesla;
import mekanism.induction.common.block.BlockWire;
import mekanism.induction.common.item.ItemBlockContractor;
import mekanism.induction.common.item.ItemBlockMultimeter;
import mekanism.induction.common.item.ItemBlockWire;
import mekanism.induction.common.tileentity.TileEntityBattery;
import mekanism.induction.common.tileentity.TileEntityEMContractor;
import mekanism.induction.common.tileentity.TileEntityMultimeter;
import mekanism.induction.common.tileentity.TileEntityTesla;
import mekanism.induction.common.tileentity.TileEntityWire;
import mekanism.induction.common.wire.EnumWireMaterial;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import universalelectricity.compatibility.Compatibility;
import universalelectricity.core.vector.Vector3;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.ObfuscationReflectionHelper;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
@ -64,8 +49,6 @@ public class MekanismInduction implements IModule
* Settings
*/
public static boolean SOUND_FXS = true;
public static boolean LO_FI_INSULATION = false;
public static boolean SHINY_SILVER = true;
/** Block ID by Jyzarc */
private static final int BLOCK_ID_PREFIX = 3200;
@ -86,16 +69,11 @@ public class MekanismInduction implements IModule
return NEXT_ITEM_ID++;
}
/** With Forge Multipart; Use EnumWireMaterial reference. **/
private static Item itemPartWire;
//Blocks
public static Block Tesla;
public static Block Multimeter;
public static Block ElectromagneticContractor;
public static Block Battery;
/** Without Forge Multipart **/
private static Block blockWire;
public static final Vector3[] DYE_COLORS = new Vector3[] { new Vector3(), new Vector3(1, 0, 0), new Vector3(0, 0.608, 0.232), new Vector3(0.588, 0.294, 0), new Vector3(0, 0, 1), new Vector3(0.5, 0, 05), new Vector3(0, 1, 1), new Vector3(0.8, 0.8, 0.8), new Vector3(0.3, 0.3, 0.3), new Vector3(1, 0.412, 0.706), new Vector3(0.616, 1, 0), new Vector3(1, 1, 0), new Vector3(0.46f, 0.932, 1), new Vector3(0.5, 0.2, 0.5), new Vector3(0.7, 0.5, 0.1), new Vector3(1, 1, 1) };
@ -105,71 +83,24 @@ public class MekanismInduction implements IModule
NetworkRegistry.instance().registerGuiHandler(this, MekanismInduction.proxy);
MinecraftForge.EVENT_BUS.register(new MultimeterEventHandler());
//Register Items
if(Loader.isModLoaded("ForgeMultipart"))
{
try {
itemPartWire = ((Item)Class.forName("mekanism.induction.common.wire.ItemPartWire").getDeclaredConstructor(Integer.TYPE).newInstance(getNextItemID())).setUnlocalizedName("Wire");
Mekanism.logger.fine("Mekanism Induction multipart loaded.");
} catch(Exception e) {
Mekanism.logger.severe("Failed to load multipart wire.");
e.printStackTrace();
}
}
else {
Mekanism.logger.fine("Mekanism Induction Multipart disabled due to Forge Multipart not found.");
}
//Blocks
Tesla = new BlockTesla(Mekanism.configuration.getBlock("Tesla", getNextBlockID()).getInt()).setUnlocalizedName("Tesla");
Multimeter = new BlockMultimeter(Mekanism.configuration.getBlock("Multimeter", getNextBlockID()).getInt()).setUnlocalizedName("Multimeter");
ElectromagneticContractor = new BlockEMContractor(Mekanism.configuration.getBlock("ElectromagneticContractor", getNextBlockID()).getInt()).setUnlocalizedName("ElectromagneticContractor");
Battery = new BlockBattery(Mekanism.configuration.getBlock("Battery", getNextBlockID()).getInt()).setUnlocalizedName("Battery");
if(itemPartWire == null)
{
blockWire = new BlockWire(getNextBlockID()).setUnlocalizedName("Wire");
}
Mekanism.configuration.save();
GameRegistry.registerBlock(Tesla, "Tesla");
GameRegistry.registerBlock(Multimeter, ItemBlockMultimeter.class, "Multimeter");
GameRegistry.registerBlock(ElectromagneticContractor, ItemBlockContractor.class, "ElectromagneticContractor");
GameRegistry.registerBlock(Battery, "Battery");
//Tiles
if(blockWire != null)
{
GameRegistry.registerBlock(blockWire, ItemBlockWire.class, blockWire.getUnlocalizedName());
}
//Tiles
GameRegistry.registerTileEntity(TileEntityTesla.class, "Tesla");
GameRegistry.registerTileEntity(TileEntityMultimeter.class, "Multimeter");
GameRegistry.registerTileEntity(TileEntityEMContractor.class, "ElectromagneticContractor");
GameRegistry.registerTileEntity(TileEntityBattery.class, "Battery");
if(blockWire != null)
{
GameRegistry.registerTileEntity(TileEntityWire.class, blockWire.getUnlocalizedName());
}
MekanismInduction.proxy.registerRenderers();
if(itemPartWire != null)
{
for(EnumWireMaterial material : EnumWireMaterial.values())
{
material.setWire(itemPartWire);
}
}
else {
for(EnumWireMaterial material : EnumWireMaterial.values())
{
material.setWire(blockWire);
}
}
}
@EventHandler
@ -177,28 +108,11 @@ public class MekanismInduction implements IModule
{
//Add this module to the core list
Mekanism.modulesLoaded.add(this);
if(itemPartWire != null)
{
try {
Class.forName("mekanism.induction.common.MultipartMI").newInstance();
} catch(Exception e) {
e.printStackTrace();
Mekanism.logger.severe("Failed to initiate Mekanism Induction multipart module.");
}
}
Compatibility.initiate();
}
@EventHandler
public void postInit(FMLPostInitializationEvent evt)
{
/**
* Recipes
*/
final ItemStack defaultWire = EnumWireMaterial.IRON.getWire();
/** Tesla - by Jyzarc */
GameRegistry.addRecipe(new MekanismRecipe(new ItemStack(Tesla), new Object[] { "WEW", " C ", " I ", 'W', Mekanism.EnrichedAlloy, 'E', Item.eyeOfEnder, 'C', Mekanism.EnergyTablet.getUnchargedItem(), 'I', new ItemStack(Mekanism.BasicBlock, 1, 8) }));
@ -210,21 +124,6 @@ public class MekanismInduction implements IModule
/** EM Contractor */
GameRegistry.addRecipe(new MekanismRecipe(new ItemStack(ElectromagneticContractor), new Object[] { " I ", "GCG", "WWW", 'W', "ingotSteel", 'C', Mekanism.EnergyTablet.getUnchargedItem(), 'G', "ingotOsmium", 'I', "ingotSteel" }));
/** Wires **/
GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.COPPER.getWire(3), "MMM", 'M', "ingotCopper"));
GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.TIN.getWire(3), "MMM", 'M', "ingotTin"));
GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.IRON.getWire(3), "MMM", 'M', Item.ingotIron));
GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.ALUMINUM.getWire(3), "MMM", 'M', "ingotAluminum"));
GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.SILVER.getWire(), "MMM", 'M', "ingotSilver"));
/** Wire Compatiblity **/
if(Loader.isModLoaded("IC2"))
{
GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.COPPER.getWire(), Items.getItem("copperCableItem")));
GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.TIN.getWire(), Items.getItem("tinCableItem")));
GameRegistry.addRecipe(new ShapelessOreRecipe(EnumWireMaterial.IRON.getWire(), Items.getItem("ironCableItem")));
}
}
@Override

View file

@ -1,39 +0,0 @@
package mekanism.induction.common;
import mekanism.induction.common.wire.EnumWireMaterial;
import mekanism.induction.common.wire.PartWire;
import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.MultiPartRegistry.IPartFactory;
import codechicken.multipart.MultipartGenerator;
import codechicken.multipart.TMultiPart;
public class MultipartMI implements IPartFactory
{
public MultipartMI()
{
init();
}
@Override
public TMultiPart createPart(String name, boolean client)
{
if(name == "resonant_induction_wire")
{
return new PartWire(EnumWireMaterial.COPPER.ordinal());
}
return null;
}
public void init()
{
MultiPartRegistry.registerParts(this, new String[] {"resonant_induction_wire"});
MultipartGenerator.registerPassThroughInterface("universalelectricity.core.block.IConductor");
MultipartGenerator.registerPassThroughInterface("buildcraft.api.power.IPowerReceptor");
MultipartGenerator.registerPassThroughInterface("cofh.api.energy.IEnergyHandler");
MultipartGenerator.registerPassThroughInterface("mekanism.induction.common.wire.IInsulatedMaterial");
MultipartGenerator.registerPassThroughInterface("mekanism.induction.common.wire.IBlockableConnection");
MultipartGenerator.registerTrait("ic2.api.energy.tile.IEnergySink", "mekanism.induction.common.wire.TEnergySink");
}
}

View file

@ -1,134 +0,0 @@
package mekanism.induction.common.block;
import java.util.List;
import mekanism.common.Mekanism;
import mekanism.induction.common.MekanismInduction;
import mekanism.induction.common.tileentity.TileEntityWire;
import mekanism.induction.common.wire.EnumWireMaterial;
import net.minecraft.block.Block;
import net.minecraft.block.BlockColored;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import universalelectricity.core.block.IConductor;
import universalelectricity.prefab.block.BlockConductor;
/**
* A copper wire block that can change its collision bounds based on the connection.
*
* @author Calclavia, Aidancbrady
*/
public class BlockWire extends BlockConductor
{
public BlockWire(int id)
{
super(Mekanism.configuration.getBlock("wire", id).getInt(id), Material.cloth);
setStepSound(soundClothFootstep);
setResistance(0.2F);
setHardness(0.1f);
setBlockBounds(0.3f, 0.3f, 0.3f, 0.7f, 0.7f, 0.7f);
setCreativeTab(CreativeTabs.tabRedstone);
Block.setBurnProperties(blockID, 30, 60);
setCreativeTab(Mekanism.tabMekanism);
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
{
super.onNeighborBlockChange(world, x, y, z, blockID);
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if(tileEntity instanceof IConductor)
{
world.markBlockForUpdate(x, y, z);
}
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9)
{
TileEntityWire tileEntity = (TileEntityWire)world.getBlockTileEntity(x, y, z);
if(entityPlayer.getCurrentEquippedItem() != null)
{
if(entityPlayer.getCurrentEquippedItem().itemID == Item.dyePowder.itemID)
{
tileEntity.setDye(entityPlayer.getCurrentEquippedItem().getItemDamage());
return true;
}
else if(entityPlayer.getCurrentEquippedItem().itemID == Block.cloth.blockID && !tileEntity.isInsulated)
{
tileEntity.setInsulated();
tileEntity.setDye(BlockColored.getDyeFromBlock(entityPlayer.getCurrentEquippedItem().getItemDamage()));
entityPlayer.inventory.decrStackSize(entityPlayer.inventory.currentItem, 1);
return true;
}
}
return false;
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean renderAsNormalBlock()
{
return false;
}
@Override
public int getRenderType()
{
return -1;
}
@Override
public TileEntity createNewTileEntity(World var1)
{
return new TileEntityWire();
}
@Override
public int damageDropped(int i)
{
return i;
}
@Override
public void getSubBlocks(int i, CreativeTabs par2CreativeTabs, List list)
{
for(EnumWireMaterial material : EnumWireMaterial.values())
{
list.add(new ItemStack(i, 1, material.ordinal()));
}
}
@Override
public void breakBlock(World world, int x, int y, int z, int par5, int par6)
{
TileEntity tile = world.getBlockTileEntity(x, y, z);
if(tile instanceof TileEntityWire)
{
TileEntityWire tileEntity = (TileEntityWire) tile;
if(tileEntity.isInsulated)
{
dropBlockAsItem_do(world, x, y, z, new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(tileEntity.dyeID)));
}
}
super.breakBlock(world, x, y, z, par5, par6);
}
}

View file

@ -1,62 +0,0 @@
package mekanism.induction.common.item;
import java.util.List;
import mekanism.induction.common.wire.EnumWireMaterial;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import universalelectricity.core.electricity.ElectricityDisplay;
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemBlockWire extends ItemBlock
{
private Icon[] icons = new Icon[EnumWireMaterial.values().length];
public ItemBlockWire(int id)
{
super(id);
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public int getMetadata(int damage)
{
return damage;
}
@Override
public String getUnlocalizedName(ItemStack itemStack)
{
return getUnlocalizedName() + "." + EnumWireMaterial.values()[itemStack.getItemDamage()].getName().toLowerCase();
}
@Override
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4)
{
list.add("Resistance: " + ElectricityDisplay.getDisplay(EnumWireMaterial.values()[itemstack.getItemDamage()].resistance, ElectricUnit.RESISTANCE));
list.add("Max Amperage: " + ElectricityDisplay.getDisplay(EnumWireMaterial.values()[itemstack.getItemDamage()].maxAmps, ElectricUnit.AMPERE));
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister register)
{
for(EnumWireMaterial material : EnumWireMaterial.values())
{
icons[material.ordinal()] = register.registerIcon("mekanism:" + material.getName() + "Wire");
}
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIconFromDamage(int meta)
{
return icons[meta];
}
}

View file

@ -1,208 +0,0 @@
package mekanism.induction.common.tileentity;
import java.util.ArrayList;
import mekanism.common.ITileNetwork;
import mekanism.induction.common.wire.EnumWireMaterial;
import mekanism.induction.common.wire.IInsulatedMaterial;
import mekanism.induction.common.wire.IInsulation;
import mekanism.induction.common.wire.IWireMaterial;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.compatibility.Compatibility;
import universalelectricity.compatibility.TileEntityUniversalConductor;
import universalelectricity.core.block.INetworkProvider;
import universalelectricity.core.vector.Vector3;
import universalelectricity.core.vector.VectorHelper;
import buildcraft.api.power.PowerHandler;
import com.google.common.io.ByteArrayDataInput;
public class TileEntityWire extends TileEntityUniversalConductor implements ITileNetwork, IInsulatedMaterial
{
public static final int DEFAULT_COLOR = 16;
public int dyeID = DEFAULT_COLOR;
public boolean isInsulated = false;
@Override
public boolean canConnect(ForgeDirection direction)
{
if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord))
{
return false;
}
Vector3 connectPos = new Vector3(this).modifyPositionFromSide(direction);
TileEntity connectTile = connectPos.getTileEntity(worldObj);
if(connectTile instanceof IWireMaterial)
{
IWireMaterial wireTile = (IWireMaterial) connectTile;
if(wireTile.getMaterial() != getMaterial())
{
return false;
}
}
if(isInsulated() && connectTile instanceof IInsulation)
{
IInsulation insulatedTile = (IInsulation) connectTile;
if((insulatedTile.isInsulated() && insulatedTile.getInsulationColor() != getInsulationColor() && getInsulationColor() != DEFAULT_COLOR && insulatedTile.getInsulationColor() != DEFAULT_COLOR))
{
return false;
}
}
return true;
}
@Override
public void refresh()
{
if(!worldObj.isRemote)
{
adjacentConnections = null;
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(canConnect(side.getOpposite()))
{
TileEntity tileEntity = VectorHelper.getConnectorFromSide(worldObj, new Vector3(this), side);
if(tileEntity != null)
{
if(tileEntity instanceof INetworkProvider)
{
getNetwork().merge(((INetworkProvider)tileEntity).getNetwork());
}
}
}
}
getNetwork().refresh();
}
}
@Override
public float getResistance()
{
return getMaterial().resistance;
}
@Override
public float getCurrentCapacity()
{
return getMaterial().maxAmps;
}
@Override
public EnumWireMaterial getMaterial()
{
return EnumWireMaterial.values()[getTypeID()];
}
public int getTypeID()
{
return worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
}
/**
* @param dyeID
*/
public void setDye(int dye)
{
dyeID = dye;
refresh();
worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord);
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType().blockID);
}
public void setInsulated()
{
isInsulated = true;
refresh();
worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord);
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType().blockID);
}
@Override
public ArrayList getNetworkedData(ArrayList data)
{
data.add(isInsulated);
data.add(dyeID);
return data;
}
@Override
public void handlePacketData(ByteArrayDataInput dataStream)
{
try {
isInsulated = dataStream.readBoolean();
dyeID = dataStream.readInt();
} catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
dyeID = nbt.getInteger("dyeID");
isInsulated = nbt.getBoolean("isInsulated");
}
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
nbt.setInteger("dyeID", dyeID);
nbt.setBoolean("isInsulated", isInsulated);
}
@Override
public void doWork(PowerHandler workProvider)
{
buildcraftBuffer = Compatibility.BC3_RATIO * 25 * getMaterial().maxAmps;
powerHandler.configure(0, buildcraftBuffer, buildcraftBuffer, buildcraftBuffer * 2);
super.doWork(workProvider);
}
@Override
public boolean isInsulated()
{
return isInsulated;
}
@Override
public void setInsulated(boolean insulated)
{
if(insulated && !isInsulated())
{
setInsulated();
}
}
@Override
public int getInsulationColor()
{
return dyeID;
}
@Override
public void setInsulationColor(int dyeID)
{
setDye(dyeID);
}
}

View file

@ -1,77 +0,0 @@
package mekanism.induction.common.wire;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import universalelectricity.core.vector.Vector3;
/**
* An enumerator for different wire materials. The metadata of the wire determines the type of the
* wire.
*
* @author Calclavia
*
*/
public enum EnumWireMaterial
{
COPPER("Copper", 12.5F, 3, 2, new Vector3(184, 115, 51)),
TIN("Tin", 13, 2, 0.5F, new Vector3(132, 132, 130)),
IRON("Iron", 0.1F, 2, 4, new Vector3(97, 102, 105)),
ALUMINUM("Aluminum", 0.025F, 6, 0.15F, new Vector3(215, 205, 181)),
SILVER("Silver", 0.005F, 1, 2, new Vector3(192, 192, 192));
public final float resistance;
public final float damage;
public final float maxAmps;
public final Vector3 color;
private ItemStack wire;
private final String name;
private EnumWireMaterial(String s, float resist, float electrocution, float max, Vector3 vec)
{
name = s;
resistance = resist;
damage = electrocution;
maxAmps = max;
color = vec.scale(1D / 255D);
}
public String getName()
{
return name;
}
public ItemStack getWire()
{
return getWire(1);
}
public ItemStack getWire(int amount)
{
ItemStack returnStack = wire.copy();
returnStack.stackSize = amount;
return returnStack;
}
public void setWire(ItemStack item)
{
if(wire == null)
{
wire = item;
OreDictionary.registerOre(getName().toLowerCase() + "Wire", wire);
}
}
public void setWire(Item item)
{
setWire(new ItemStack(item, 1, ordinal()));
}
public void setWire(Block block)
{
setWire(new ItemStack(block, 1, ordinal()));
}
}

View file

@ -1,8 +0,0 @@
package mekanism.induction.common.wire;
import net.minecraftforge.common.ForgeDirection;
public interface IBlockableConnection
{
public boolean isBlockedOnSide(ForgeDirection side);
}

View file

@ -1,6 +0,0 @@
package mekanism.induction.common.wire;
public interface IInsulatedMaterial extends IInsulation, IWireMaterial
{
}

View file

@ -1,12 +0,0 @@
package mekanism.induction.common.wire;
public interface IInsulation
{
public boolean isInsulated();
public void setInsulated(boolean insulated);
public int getInsulationColor();
public void setInsulationColor(int dye);
}

View file

@ -1,6 +0,0 @@
package mekanism.induction.common.wire;
public interface IWireMaterial
{
public EnumWireMaterial getMaterial();
}

View file

@ -1,95 +0,0 @@
package mekanism.induction.common.wire;
import java.util.List;
import mekanism.common.Mekanism;
import mekanism.induction.client.render.RenderPartWire;
import mekanism.induction.common.MekanismInduction;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.world.World;
import net.minecraftforge.common.Configuration;
import universalelectricity.core.electricity.ElectricityDisplay;
import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit;
import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3;
import codechicken.multipart.JItemMultiPart;
import codechicken.multipart.TMultiPart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemPartWire extends JItemMultiPart
{
private Icon[] icons = new Icon[EnumWireMaterial.values().length];
public ItemPartWire(int id)
{
super(Mekanism.configuration.get(Configuration.CATEGORY_ITEM, "wireMultipart", id).getInt(id));
setCreativeTab(Mekanism.tabMekanism);
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public TMultiPart newPart(ItemStack arg0, EntityPlayer arg1, World arg2, BlockCoord arg3, int arg4, Vector3 arg5)
{
return new PartWire(getDamage(arg0));
}
@Override
public int getMetadata(int damage)
{
return damage;
}
@Override
public String getUnlocalizedName(ItemStack itemStack)
{
return "tile.Wire." + EnumWireMaterial.values()[itemStack.getItemDamage()].getName() + "Wire";
}
@Override
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4)
{
list.add("Resistance: " + ElectricityDisplay.getDisplay(EnumWireMaterial.values()[itemstack.getItemDamage()].resistance, ElectricUnit.RESISTANCE));
list.add("Max Amperage: " + ElectricityDisplay.getDisplay(EnumWireMaterial.values()[itemstack.getItemDamage()].maxAmps, ElectricUnit.AMPERE));
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister register)
{
for(EnumWireMaterial material : EnumWireMaterial.values())
{
icons[material.ordinal()] = register.registerIcon("mekanism:" + material.getName() + "Wire");
}
RenderPartWire.registerIcons(register);
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIconFromDamage(int meta)
{
return icons[meta];
}
@Override
public void getSubItems(int itemID, CreativeTabs tab, List listToAddTo)
{
for(EnumWireMaterial mat : EnumWireMaterial.values())
{
listToAddTo.add(new ItemStack(itemID, 1, mat.ordinal()));
}
}
@Override
@SideOnly(Side.CLIENT)
public int getSpriteNumber()
{
return 0;
}
}

View file

@ -1,37 +0,0 @@
package mekanism.induction.common.wire;
import net.minecraft.block.Block;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.handler.MultipartProxy;
public abstract class PartAdvanced extends TMultiPart
{
protected long ticks = 0;
@Override
public void update()
{
if(ticks == 0)
{
initiate();
}
if(ticks >= Long.MAX_VALUE)
{
ticks = 1;
}
ticks++;
}
@Override
public void onAdded()
{
world().notifyBlocksOfNeighborChange(x(), y(), z(), ((Block)MultipartProxy.block()).blockID);
}
/**
* Called on the TileEntity's first tick.
*/
public void initiate() {}
}

View file

@ -1,253 +0,0 @@
package mekanism.induction.common.wire;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.block.IConductor;
import universalelectricity.core.block.IConnector;
import universalelectricity.core.block.INetworkProvider;
import universalelectricity.core.electricity.NetworkLoader;
import universalelectricity.core.grid.IElectricityNetwork;
import universalelectricity.core.vector.Vector3;
import universalelectricity.core.vector.VectorHelper;
import codechicken.multipart.TileMultipart;
public abstract class PartConductor extends PartAdvanced implements IConductor
{
private IElectricityNetwork network;
public TileEntity[] adjacentConnections = null;
public byte currentWireConnections = 0x00;
public byte currentAcceptorConnections = 0x00;
public byte getAllCurrentConnections()
{
return (byte) (currentWireConnections | currentAcceptorConnections);
}
public static boolean connectionMapContainsSide(byte connections, ForgeDirection side)
{
byte tester = (byte) (1 << side.ordinal());
return ((connections & tester) > 0);
}
@Override
public void bind(TileMultipart t)
{
if(tile() != null && network != null)
{
getNetwork().getConductors().remove(tile());
super.bind(t);
getNetwork().getConductors().add((IConductor) tile());
}
else {
super.bind(t);
}
}
@Override
public void preRemove()
{
if(!world().isRemote && tile() instanceof IConductor)
{
getNetwork().split((IConductor) tile());
}
super.preRemove();
}
@Override
public boolean doesTick()
{
return false;
}
@Override
public IElectricityNetwork getNetwork()
{
if(network == null && tile() instanceof IConductor)
{
setNetwork(NetworkLoader.getNewNetwork((IConductor)tile()));
}
return network;
}
public boolean canConnectBothSides(TileEntity tile, ForgeDirection side)
{
boolean notPrevented = !isConnectionPrevented(tile, side);
if(tile instanceof IConnector)
{
notPrevented &= ((IConnector)tile).canConnect(side.getOpposite());
}
return notPrevented;
}
@Override
public void setNetwork(IElectricityNetwork net)
{
network = net;
}
/**
* Override if there are ways of preventing a connection
*
* @param tile The TileEntity on the given side
* @param side The side we're checking
* @return Whether we're preventing connections on given side or to given tileEntity
*/
public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side)
{
return false;
}
public byte getPossibleWireConnections()
{
byte connections = 0x00;
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side);
if(tileEntity instanceof INetworkProvider && canConnectBothSides(tileEntity, side))
{
connections |= 1 << side.ordinal();
}
}
return connections;
}
public byte getPossibleAcceptorConnections()
{
byte connections = 0x00;
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side);
if(isValidAcceptor(tileEntity) && canConnectBothSides(tileEntity, side))
{
connections |= 1 << side.ordinal();
}
}
return connections;
}
/**
* Override if there are different kinds of acceptor possible
*/
public boolean isValidAcceptor(TileEntity tile)
{
return tile instanceof IConnector;
}
@Override
public void refresh()
{
if(!world().isRemote)
{
adjacentConnections = null;
byte possibleWireConnections = getPossibleWireConnections();
byte possibleAcceptorConnections = getPossibleAcceptorConnections();
if(possibleWireConnections != currentWireConnections)
{
byte or = (byte) (possibleWireConnections | currentWireConnections);
if(or != possibleWireConnections) // Connections have been removed
{
getNetwork().split((IConductor) tile());
setNetwork(null);
}
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
if(connectionMapContainsSide(possibleWireConnections, side))
{
TileEntity tileEntity = VectorHelper.getConnectorFromSide(world(), new Vector3(tile()), side);
if(tileEntity instanceof INetworkProvider)
{
getNetwork().merge(((INetworkProvider) tileEntity).getNetwork());
}
}
}
currentWireConnections = possibleWireConnections;
}
currentAcceptorConnections = possibleAcceptorConnections;
getNetwork().refresh();
sendDescUpdate();
}
tile().markRender();
}
/**
* Should include connections that are in the current connection maps even if those connections
* aren't allowed any more. This is so that networks split correctly.
*/
@Override
public TileEntity[] getAdjacentConnections()
{
if(adjacentConnections == null)
{
adjacentConnections = new TileEntity[6];
for(byte i = 0; i < 6; i++)
{
ForgeDirection side = ForgeDirection.getOrientation(i);
TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side);
if(isCurrentlyConnected(side))
{
adjacentConnections[i] = tileEntity;
}
}
}
return adjacentConnections;
}
public boolean isCurrentlyConnected(ForgeDirection side)
{
return connectionMapContainsSide(getAllCurrentConnections(), side);
}
/**
* Shouldn't need to be overridden. Override connectionPrevented instead
*/
@Override
public boolean canConnect(ForgeDirection direction)
{
Vector3 connectPos = new Vector3(tile()).modifyPositionFromSide(direction);
TileEntity connectTile = connectPos.getTileEntity(world());
return !isConnectionPrevented(connectTile, direction);
}
@Override
public void onAdded()
{
super.onAdded();
refresh();
}
@Override
public void onChunkLoad()
{
super.onChunkLoad();
refresh();
}
@Override
public void onNeighborChanged()
{
super.onNeighborChanged();
refresh();
}
}

View file

@ -1,264 +0,0 @@
package mekanism.induction.common.wire;
import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergyTile;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.MinecraftForge;
import universalelectricity.compatibility.Compatibility;
import universalelectricity.core.electricity.ElectricityPack;
import universalelectricity.core.vector.Vector3;
import universalelectricity.core.vector.VectorHelper;
import buildcraft.api.power.IPowerReceptor;
import buildcraft.api.power.PowerHandler;
import buildcraft.api.power.PowerHandler.PowerReceiver;
import buildcraft.api.power.PowerHandler.Type;
import cofh.api.energy.IEnergyHandler;
public abstract class PartUniversalConductor extends PartConductor implements IEnergySink, IPowerReceptor, IEnergyHandler
{
protected boolean isAddedToEnergyNet;
public PowerHandler powerHandler;
public float buildcraftBuffer = Compatibility.BC3_RATIO * 50;
public PartUniversalConductor()
{
powerHandler = new PowerHandler(this, Type.PIPE);
powerHandler.configure(0, buildcraftBuffer, buildcraftBuffer, buildcraftBuffer * 2);
powerHandler.configurePowerPerdition(0, 0);
}
@Override
public boolean isValidAcceptor(TileEntity tile)
{
if(tile instanceof IEnergyTile)
{
return true;
}
else if(tile instanceof IPowerReceptor)
{
return true;
}
else if(tile instanceof IEnergyHandler)
{
return true;
}
return super.isValidAcceptor(tile);
}
@Override
public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side)
{
if(tile instanceof IEnergyHandler)
{
return !((IEnergyHandler)tile).canInterface(side);
}
return super.isConnectionPrevented(tile, side);
}
@Override
public void onWorldJoin()
{
super.onWorldJoin();
if(!world().isRemote)
{
if(!isAddedToEnergyNet)
{
initIC();
}
}
}
@Override
public void onAdded()
{
super.onAdded();
if(!world().isRemote)
{
if(!isAddedToEnergyNet)
{
initIC();
}
}
}
@Override
public void onChunkLoad()
{
super.onChunkLoad();
if(!world().isRemote)
{
if(!isAddedToEnergyNet)
{
initIC();
}
}
}
@Override
public void onWorldSeparate()
{
unloadTileIC2();
super.onWorldSeparate();
}
@Override
public void onChunkUnload()
{
unloadTileIC2();
super.onChunkUnload();
}
@Override
public void onRemoved() {}
@Override
public void preRemove()
{
unloadTileIC2();
super.preRemove();
}
protected void initIC()
{
if(Compatibility.isIndustrialCraft2Loaded())
{
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile()));
}
isAddedToEnergyNet = true;
}
private void unloadTileIC2()
{
if(isAddedToEnergyNet && world() != null)
{
if(Compatibility.isIndustrialCraft2Loaded())
{
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile()));
}
isAddedToEnergyNet = false;
}
}
@Override
public double demandedEnergyUnits()
{
if(getNetwork() == null)
{
return 0.0;
}
return getNetwork().getRequest(tile()).getWatts() * Compatibility.TO_IC2_RATIO;
}
@Override
public double injectEnergyUnits(ForgeDirection directionFrom, double amount)
{
TileEntity tile = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), directionFrom);
ElectricityPack pack = ElectricityPack.getFromWatts((float) (amount * Compatibility.IC2_RATIO), 120);
return getNetwork().produce(pack, tile(), tile) * Compatibility.TO_IC2_RATIO;
}
@Override
public int getMaxSafeInput()
{
return Integer.MAX_VALUE;
}
@Override
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
{
return true;
}
/**
* BuildCraft functions
*/
@Override
public PowerReceiver getPowerReceiver(ForgeDirection side)
{
return powerHandler.getPowerReceiver();
}
@Override
public void doWork(PowerHandler workProvider)
{
Set<TileEntity> ignoreTiles = new HashSet<TileEntity>();
ignoreTiles.add(tile());
for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
TileEntity tile = new Vector3(tile()).modifyPositionFromSide(direction).getTileEntity(world());
ignoreTiles.add(tile);
}
ElectricityPack pack = ElectricityPack.getFromWatts(workProvider.useEnergy(0, getNetwork().getRequest(tile()).getWatts() * Compatibility.TO_BC_RATIO, true) * Compatibility.BC3_RATIO, 120);
getNetwork().produce(pack, ignoreTiles.toArray(new TileEntity[0]));
}
@Override
public World getWorld()
{
return world();
}
/**
* Thermal Expansion Functions
*/
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate)
{
ElectricityPack pack = ElectricityPack.getFromWatts(maxReceive * Compatibility.TE_RATIO, 1);
float request = getMaxEnergyStored(from);
if(!simulate)
{
if(request > 0)
{
return (int) (maxReceive - (getNetwork().produce(pack, new Vector3(tile()).modifyPositionFromSide(from).getTileEntity(world())) * Compatibility.TO_TE_RATIO));
}
return 0;
}
return (int)Math.min(maxReceive, request * Compatibility.TO_TE_RATIO);
}
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate)
{
return 0;
}
@Override
public boolean canInterface(ForgeDirection from)
{
return true;
}
@Override
public int getEnergyStored(ForgeDirection from)
{
return 0;
}
@Override
public int getMaxEnergyStored(ForgeDirection from)
{
return (int)Math.round(getNetwork().getRequest(new Vector3(tile()).modifyPositionFromSide(from).getTileEntity(world())).getWatts() * Compatibility.TO_TE_RATIO);
}
}

View file

@ -1,481 +0,0 @@
package mekanism.induction.common.wire;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import mekanism.induction.client.render.RenderPartWire;
import mekanism.induction.common.MekanismInduction;
import net.minecraft.block.Block;
import net.minecraft.block.BlockColored;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemShears;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.common.ForgeDirection;
import universalelectricity.compatibility.Compatibility;
import buildcraft.api.power.PowerHandler;
import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput;
import codechicken.lib.lighting.LazyLightMatrix;
import codechicken.lib.raytracer.IndexedCuboid6;
import codechicken.lib.render.CCRenderState;
import codechicken.lib.render.IconTransformation;
import codechicken.lib.render.RenderUtils;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Translation;
import codechicken.microblock.IHollowConnect;
import codechicken.multipart.IconHitEffects;
import codechicken.multipart.JIconHitEffects;
import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.NormalOcclusionTest;
import codechicken.multipart.PartMap;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.TSlottedPart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class PartWire extends PartUniversalConductor implements TSlottedPart, JNormalOcclusion, IHollowConnect, JIconHitEffects, IInsulatedMaterial, IBlockableConnection
{
public static final int DEFAULT_COLOR = 16;
public int dyeID = DEFAULT_COLOR;
public boolean isInsulated = false;
public static IndexedCuboid6[] sides = new IndexedCuboid6[7];
public static IndexedCuboid6[] insulatedSides = new IndexedCuboid6[7];
public EnumWireMaterial material = EnumWireMaterial.COPPER;
/** Client Side Connection Check */
private ForgeDirection testingSide;
static
{
sides[0] = new IndexedCuboid6(0, new Cuboid6(0.36, 0.000, 0.36, 0.64, 0.36, 0.64));
sides[1] = new IndexedCuboid6(1, new Cuboid6(0.36, 0.64, 0.36, 0.64, 1.000, 0.64));
sides[2] = new IndexedCuboid6(2, new Cuboid6(0.36, 0.36, 0.000, 0.64, 0.64, 0.36));
sides[3] = new IndexedCuboid6(3, new Cuboid6(0.36, 0.36, 0.64, 0.64, 0.64, 1.000));
sides[4] = new IndexedCuboid6(4, new Cuboid6(0.000, 0.36, 0.36, 0.36, 0.64, 0.64));
sides[5] = new IndexedCuboid6(5, new Cuboid6(0.64, 0.36, 0.36, 1.000, 0.64, 0.64));
sides[6] = new IndexedCuboid6(6, new Cuboid6(0.36, 0.36, 0.36, 0.64, 0.64, 0.64));
insulatedSides[0] = new IndexedCuboid6(0, new Cuboid6(0.3, 0.0, 0.3, 0.7, 0.3, 0.7));
insulatedSides[1] = new IndexedCuboid6(1, new Cuboid6(0.3, 0.7, 0.3, 0.7, 1.0, 0.7));
insulatedSides[2] = new IndexedCuboid6(2, new Cuboid6(0.3, 0.3, 0.0, 0.7, 0.7, 0.3));
insulatedSides[3] = new IndexedCuboid6(3, new Cuboid6(0.3, 0.3, 0.7, 0.7, 0.7, 1.0));
insulatedSides[4] = new IndexedCuboid6(4, new Cuboid6(0.0, 0.3, 0.3, 0.3, 0.7, 0.7));
insulatedSides[5] = new IndexedCuboid6(5, new Cuboid6(0.7, 0.3, 0.3, 1.0, 0.7, 0.7));
insulatedSides[6] = new IndexedCuboid6(6, new Cuboid6(0.3, 0.3, 0.3, 0.7, 0.7, 0.7));
}
public PartWire(int typeID)
{
this(EnumWireMaterial.values()[typeID]);
}
public PartWire(EnumWireMaterial type)
{
super();
material = type;
}
public PartWire()
{
super();
}
@Override
public boolean canConnect(ForgeDirection direction)
{
if(world().isBlockIndirectlyGettingPowered(x(), y(), z()))
{
return false;
}
return super.canConnect(direction);
}
@Override
public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side)
{
if(tile instanceof IWireMaterial)
{
IWireMaterial wireTile = (IWireMaterial)tile;
if(wireTile.getMaterial() != getMaterial())
{
return true;
}
}
if(isInsulated() && tile instanceof IInsulation)
{
IInsulation insulatedTile = (IInsulation)tile;
if((insulatedTile.isInsulated() && insulatedTile.getInsulationColor() != getInsulationColor() && getInsulationColor() != DEFAULT_COLOR && insulatedTile.getInsulationColor() != DEFAULT_COLOR))
{
return true;
}
}
return (isBlockedOnSide(side) || tile instanceof IBlockableConnection && ((IBlockableConnection)tile).isBlockedOnSide(side.getOpposite()));
}
@Override
public byte getPossibleWireConnections()
{
if(world().isBlockIndirectlyGettingPowered(x(), y(), z()))
{
return 0x00;
}
return super.getPossibleWireConnections();
}
@Override
public byte getPossibleAcceptorConnections()
{
if(world().isBlockIndirectlyGettingPowered(x(), y(), z()))
{
return 0x00;
}
return super.getPossibleAcceptorConnections();
}
@Override
public float getResistance()
{
return getMaterial().resistance;
}
@Override
public float getCurrentCapacity()
{
return getMaterial().maxAmps;
}
@Override
public EnumWireMaterial getMaterial()
{
return material;
}
public int getTypeID()
{
return material.ordinal();
}
public void setDye(int dye)
{
dyeID = dye;
refresh();
world().markBlockForUpdate(x(), y(), z());
tile().notifyPartChange(this);
}
public void setMaterialFromID(int id)
{
material = EnumWireMaterial.values()[id];
}
@Override
public void doWork(PowerHandler workProvider)
{
buildcraftBuffer = Compatibility.BC3_RATIO * 25 * Math.min(getMaterial().maxAmps, 100);
powerHandler.configure(0, buildcraftBuffer, buildcraftBuffer, buildcraftBuffer * 2);
super.doWork(workProvider);
}
@Override
public String getType()
{
return "resonant_induction_wire";
}
@Override
public boolean occlusionTest(TMultiPart other)
{
return NormalOcclusionTest.apply(this, other);
}
@Override
public Iterable<IndexedCuboid6> getSubParts()
{
Set<IndexedCuboid6> subParts = new HashSet<IndexedCuboid6>();
IndexedCuboid6[] currentSides = isInsulated() ? insulatedSides : sides;
if(tile() != null)
{
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{
int ord = side.ordinal();
if(connectionMapContainsSide(getAllCurrentConnections(), side) || side == testingSide)
subParts.add(currentSides[ord]);
}
}
subParts.add(currentSides[6]);
return subParts;
}
@Override
public Iterable<Cuboid6> getCollisionBoxes()
{
Set<Cuboid6> collisionBoxes = new HashSet<Cuboid6>();
collisionBoxes.addAll((Collection<? extends Cuboid6>)getSubParts());
return collisionBoxes;
}
@Override
public Iterable<ItemStack> getDrops()
{
List<ItemStack> drops = new ArrayList<ItemStack>();
drops.add(pickItem(null));
if(isInsulated)
{
drops.add(new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(dyeID)));
}
return drops;
}
@Override
public float getStrength(MovingObjectPosition hit, EntityPlayer player)
{
return 10F;
}
@Override
@SideOnly(Side.CLIENT)
public void renderStatic(codechicken.lib.vec.Vector3 pos, LazyLightMatrix olm, int pass)
{
if(pass == 0)
{
RenderPartWire.INSTANCE.renderStatic(this);
}
}
@Override
@SideOnly(Side.CLIENT)
public void renderDynamic(codechicken.lib.vec.Vector3 pos, float frame, int pass)
{
if(MekanismInduction.SHINY_SILVER && getMaterial() == EnumWireMaterial.SILVER)
{
RenderPartWire.INSTANCE.renderShine(this, pos.x, pos.y, pos.z, frame);
}
}
@Override
public void drawBreaking(RenderBlocks renderBlocks)
{
CCRenderState.reset();
RenderUtils.renderBlock(sides[6], 0, new Translation(x(), y(), z()), new IconTransformation(renderBlocks.overrideBlockTexture), null);
}
@Override
public void readDesc(MCDataInput packet)
{
setMaterialFromID(packet.readInt());
dyeID = packet.readInt();
isInsulated = packet.readBoolean();
currentWireConnections = packet.readByte();
currentAcceptorConnections = packet.readByte();
if(tile() != null)
{
tile().markRender();
}
}
@Override
public void writeDesc(MCDataOutput packet)
{
packet.writeInt(getTypeID());
packet.writeInt(dyeID);
packet.writeBoolean(isInsulated);
packet.writeByte(currentWireConnections);
packet.writeByte(currentAcceptorConnections);
}
@Override
public void save(NBTTagCompound nbt)
{
super.save(nbt);
nbt.setInteger("typeID", getTypeID());
nbt.setInteger("dyeID", dyeID);
nbt.setBoolean("isInsulated", isInsulated);
}
@Override
public void load(NBTTagCompound nbt)
{
super.load(nbt);
setMaterialFromID(nbt.getInteger("typeID"));
dyeID = nbt.getInteger("dyeID");
isInsulated = nbt.getBoolean("isInsulated");
}
@Override
public ItemStack pickItem(MovingObjectPosition hit)
{
return EnumWireMaterial.values()[getTypeID()].getWire();
}
@Override
public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item)
{
if(item != null)
{
if(item.itemID == Item.dyePowder.itemID && isInsulated())
{
setDye(item.getItemDamage());
return true;
}
else if(item.itemID == Block.cloth.blockID)
{
if(isInsulated() && !world().isRemote)
{
tile().dropItems(Collections.singletonList(new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(dyeID))));
}
setInsulated(BlockColored.getDyeFromBlock(item.getItemDamage()));
player.inventory.decrStackSize(player.inventory.currentItem, 1);
return true;
}
else if((item.itemID == Item.shears.itemID || item.getItem() instanceof ItemShears) && isInsulated())
{
if(!world().isRemote)
{
tile().dropItems(Collections.singletonList(new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(dyeID))));
}
setInsulated(false);
return true;
}
}
return false;
}
@Override
public Iterable<Cuboid6> getOcclusionBoxes()
{
return getCollisionBoxes();
}
@Override
public int getSlotMask()
{
return PartMap.CENTER.mask;
}
@Override
public int getHollowSize()
{
return isInsulated ? 8 : 6;
}
@Override
public boolean isInsulated()
{
return isInsulated;
}
@Override
public int getInsulationColor()
{
return isInsulated ? dyeID : -1;
}
@Override
public void setInsulationColor(int dye)
{
dyeID = dye;
refresh();
world().markBlockForUpdate(x(), y(), z());
tile().notifyPartChange(this);
}
@Override
public void setInsulated(boolean insulated)
{
isInsulated = insulated;
dyeID = DEFAULT_COLOR;
refresh();
world().markBlockForUpdate(x(), y(), z());
tile().notifyPartChange(this);
}
public void setInsulated(int dyeColour)
{
isInsulated = true;
dyeID = dyeColour;
refresh();
world().markBlockForUpdate(x(), y(), z());
tile().notifyPartChange(this);
}
public void setInsulated()
{
setInsulated(true);
}
@Override
public Cuboid6 getBounds()
{
return new Cuboid6(0.375, 0.375, 0.375, 0.625, 0.625, 0.625);
}
@Override
public Icon getBreakingIcon(Object subPart, int side)
{
return RenderPartWire.breakIcon;
}
@Override
public Icon getBrokenIcon(int side)
{
return RenderPartWire.breakIcon;
}
@Override
public void addHitEffects(MovingObjectPosition hit, EffectRenderer effectRenderer)
{
IconHitEffects.addHitEffects(this, hit, effectRenderer);
}
@Override
public void addDestroyEffects(EffectRenderer effectRenderer)
{
IconHitEffects.addDestroyEffects(this, effectRenderer, false);
}
@Override
public boolean isBlockedOnSide(ForgeDirection side)
{
TMultiPart blocker = tile().partMap(side.ordinal());
testingSide = side;
boolean expandable = NormalOcclusionTest.apply(this, blocker);
testingSide = null;
return !expandable;
}
@Override
public void onPartChanged(TMultiPart part)
{
refresh();
}
}

View file

@ -1,109 +0,0 @@
package mekanism.induction.common.wire;
import ic2.api.energy.tile.IEnergySink;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart;
public class TEnergySink extends TileMultipart implements IEnergySink
{
public Set<IEnergySink> ic2Sinks = new HashSet<IEnergySink>();
@Override
public void copyFrom(TileMultipart that)
{
super.copyFrom(that);
if(that instanceof TEnergySink)
{
ic2Sinks = ((TEnergySink)that).ic2Sinks;
}
}
@Override
public void bindPart(TMultiPart part)
{
super.bindPart(part);
if(part instanceof IEnergySink)
{
ic2Sinks.add((IEnergySink) part);
}
}
@Override
public void partRemoved(TMultiPart part, int p)
{
super.partRemoved(part, p);
if(part instanceof IEnergySink)
{
ic2Sinks.remove(part);
}
}
@Override
public void clearParts()
{
super.clearParts();
ic2Sinks.clear();
}
@Override
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction)
{
for(IEnergySink sink : ic2Sinks)
{
if(sink.acceptsEnergyFrom(emitter, direction))
{
return true;
}
}
return false;
}
@Override
public double demandedEnergyUnits()
{
double demanded = 0;
for(IEnergySink sink : ic2Sinks)
{
demanded += sink.demandedEnergyUnits();
}
return demanded;
}
@Override
public double injectEnergyUnits(ForgeDirection directionFrom, double amount)
{
for(IEnergySink sink : ic2Sinks)
{
amount = sink.injectEnergyUnits(directionFrom, Math.min(amount, sink.demandedEnergyUnits()));
}
return amount;
}
@Override
public int getMaxSafeInput()
{
int safe = 0;
for(IEnergySink sink : ic2Sinks)
{
safe += sink.getMaxSafeInput();
}
return safe;
}
}

View file

@ -372,9 +372,9 @@ item.SteelShovel.name=Stahlschaufel
item.SteelHoe.name=Stahlhacke
item.SteelSword.name=Stahlschwert
//*****//
//TOOLS//
//*****//
//*********//
//INDUCTION//
//*********//
//Blocks
tile.Tesla.name=Teslaspule
@ -382,13 +382,6 @@ tile.Multimeter.name=Multimeter
tile.ElectromagneticContractor.name=Elektromagnetischer Kontraktor
tile.Battery.name=Modulare Batterie
//Wires
tile.Wire.CopperWire.name=Kupferkabel
tile.Wire.TinWire.name=Zinnkabel
tile.Wire.IronWire.name=Eisenkabel
tile.Wire.AluminumWire.name=Aluminiumkabel
tile.Wire.SilverWire.name=Silberkabel
//General text
text.contractor.success=Kontraktor erfolgreich verbunden
text.tesla.success=Teslaspule erfolgreich verbunden

View file

@ -294,6 +294,12 @@ tile.Generator.BioGenerator.name=Bio-Generator
tile.Generator.AdvancedSolarGenerator.name=Advanced Solar Generator
tile.Generator.WindTurbine.name=Wind Turbine
//Gui text
gui.heatGenerator.fuel=Fuel
gui.solarGenerator.sun=Sun
gui.bioGenerator.bioFuel=BioFuel
gui.electrolyticSeparator.dump=Dump
//*****//
//TOOLS//
//*****//
@ -377,9 +383,9 @@ item.SteelShovel.name=Steel Shovel
item.SteelHoe.name=Steel Hoe
item.SteelSword.name=Steel Sword
//*****//
//TOOLS//
//*****//
//*********//
//INDUCTION//
//*********//
//Blocks
tile.Tesla.name=Tesla Coil
@ -387,19 +393,6 @@ tile.Multimeter.name=Multimeter
tile.ElectromagneticContractor.name=Electromagnetic Contractor
tile.Battery.name=Modular Battery
//Wires
tile.Wire.CopperWire.name=Copper Wire
tile.Wire.TinWire.name=Tin Wire
tile.Wire.IronWire.name=Iron Wire
tile.Wire.AluminumWire.name=Aluminum Wire
tile.Wire.SilverWire.name=Silver Wire
//General text
text.contractor.success=Linked contractor successfully
text.tesla.success=Linked tesla successfully
//Gui text
gui.heatGenerator.fuel=Fuel
gui.solarGenerator.sun=Sun
gui.bioGenerator.bioFuel=BioFuel
gui.electrolyticSeparator.dump=Dump

View file

@ -1,632 +0,0 @@
# Blender v2.66 (sub 1) OBJ File: 'wire.blend'
# www.blender.org
mtllib wire.mtl
g southInsulation
v -0.187500 0.687500 -0.187500
v -0.187500 0.312500 -0.187500
v 0.187500 0.312500 -0.187500
v 0.187500 0.687500 -0.187500
v -0.187500 0.687500 -0.500000
v -0.187500 0.312500 -0.500000
v 0.187500 0.312500 -0.500000
v 0.187500 0.687500 -0.500000
v -0.187500 0.312500 -0.375000
v -0.187500 0.687500 -0.375000
v 0.187500 0.312500 -0.375000
v 0.187500 0.687500 -0.375000
v -0.187500 0.687500 -0.312500
v 0.187500 0.687500 -0.312500
v 0.187500 0.312500 -0.312500
v -0.187500 0.312500 -0.312500
v 0.125000 0.312500 -0.500000
v -0.125000 0.687500 -0.500000
v -0.125000 0.312500 -0.500000
v 0.125000 0.687500 -0.500000
v -0.125000 0.375000 -0.500000
v -0.125000 0.625000 -0.500000
v 0.125000 0.625000 -0.500000
v 0.125000 0.375000 -0.500000
vt 0.687500 0.562500
vt 0.687500 0.937500
vt 0.562500 0.937500
vt 0.562500 0.562500
vt 0.062500 0.437500
vt 0.062500 0.062500
vt 0.437500 0.062500
vt 0.437500 0.437500
vt 0.125000 0.062500
vt 0.125000 0.125000
vt 0.125000 0.375000
vt 0.125000 0.437500
vt 0.375000 0.437500
vt 0.375000 0.375000
vt 0.375000 0.062500
vt 0.375000 0.125000
vt 0.875000 0.937500
vt 0.750000 0.937500
vt 0.750000 0.562500
vt 0.875000 0.562500
vt 0.875000 0.625000
vt 0.875000 0.875000
vn -1.000000 0.000000 -0.000000
vn 0.000000 -1.000000 -0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 0.000000 -1.000000
usemtl None
s off
f 13/1/1 16/2/1 2/3/1 1/4/1
f 16/1/2 15/2/2 3/3/2 2/4/2
f 15/1/3 14/2/3 4/3/3 3/4/3
f 14/1/4 13/2/4 1/3/4 4/4/4
f 1/5/5 2/6/5 3/7/5 4/8/5
f 6/5/6 5/6/6 18/9/6 22/10/6 21/11/6 19/12/6
f 17/13/6 19/12/6 21/11/6 24/14/6
f 22/10/6 18/9/6 20/15/6 23/16/6
f 8/7/6 7/8/6 17/13/6 24/14/6 23/16/6 20/15/6
f 5/17/4 10/18/4 12/19/4 8/20/4 20/21/4 18/22/4
f 7/17/2 11/18/2 9/19/2 6/20/2 19/21/2 17/22/2
f 9/8/5 11/5/5 12/6/5 10/7/5
f 6/17/1 9/18/1 10/19/1 5/20/1
f 11/18/3 7/17/3 8/20/3 12/19/3
f 14/7/6 15/8/6 16/5/6 13/6/6
g eastInsulation
v 0.187500 0.687500 0.187500
v 0.187500 0.687500 -0.187500
v 0.187500 0.312500 -0.187500
v 0.187500 0.312500 0.187500
v 0.500000 0.687500 0.187500
v 0.500000 0.687500 -0.187500
v 0.500000 0.312500 -0.187500
v 0.500000 0.312500 0.187500
v 0.375000 0.687500 -0.187500
v 0.375000 0.687500 0.187500
v 0.375000 0.312500 -0.187500
v 0.375000 0.312500 0.187500
v 0.312500 0.687500 0.187500
v 0.312500 0.312500 0.187500
v 0.312500 0.312500 -0.187500
v 0.312500 0.687500 -0.187500
v 0.500000 0.375000 -0.187500
v 0.500000 0.625000 0.187500
v 0.500000 0.625000 -0.187500
v 0.500000 0.375000 0.187500
v 0.500000 0.625000 -0.125000
v 0.500000 0.625000 0.125000
v 0.500000 0.375000 0.125000
v 0.500000 0.375000 -0.125000
vt 0.687500 0.562500
vt 0.687500 0.937500
vt 0.562500 0.937500
vt 0.562500 0.562500
vt 0.062500 0.937500
vt 0.062500 0.562500
vt 0.437500 0.562500
vt 0.437500 0.937500
vt 0.062500 0.437500
vt 0.062500 0.062500
vt 0.125000 0.062500
vt 0.125000 0.125000
vt 0.125000 0.375000
vt 0.125000 0.437500
vt 0.375000 0.437500
vt 0.375000 0.375000
vt 0.375000 0.062500
vt 0.375000 0.125000
vt 0.437500 0.062500
vt 0.437500 0.437500
vt 0.875000 0.937500
vt 0.750000 0.937500
vt 0.750000 0.562500
vt 0.875000 0.562500
vt 0.875000 0.625000
vt 0.875000 0.875000
usemtl None
s off
f 37/23/4 40/24/4 26/25/4 25/26/4
f 40/23/6 39/24/6 27/25/6 26/26/6
f 39/23/2 38/24/2 28/25/2 27/26/2
f 38/23/5 37/24/5 25/25/5 28/26/5
f 25/27/1 26/28/1 27/29/1 28/30/1
f 30/31/3 29/32/3 42/33/3 46/34/3 45/35/3 43/36/3
f 41/37/3 43/36/3 45/35/3 48/38/3
f 46/34/3 42/33/3 44/39/3 47/40/3
f 32/41/3 31/42/3 41/37/3 48/38/3 47/40/3 44/39/3
f 29/43/5 34/44/5 36/45/5 32/46/5 44/47/5 42/48/5
f 31/43/6 35/44/6 33/45/6 30/46/6 43/47/6 41/48/6
f 33/30/1 35/27/1 36/28/1 34/29/1
f 30/43/4 33/44/4 34/45/4 29/46/4
f 35/44/2 31/43/2 32/46/2 36/45/2
f 38/29/3 39/30/3 40/27/3 37/28/3
g westInsulation
v -0.187500 0.312500 0.187500
v -0.187500 0.312500 -0.187500
v -0.187500 0.687500 -0.187500
v -0.187500 0.687500 0.187500
v -0.500000 0.312500 0.187500
v -0.500000 0.312500 -0.187500
v -0.500000 0.687500 -0.187500
v -0.500000 0.687500 0.187500
v -0.375000 0.312500 -0.187500
v -0.375000 0.312500 0.187500
v -0.375000 0.687500 -0.187500
v -0.375000 0.687500 0.187500
v -0.312500 0.312500 0.187500
v -0.312500 0.687500 0.187500
v -0.312500 0.687500 -0.187500
v -0.312500 0.312500 -0.187500
v -0.500000 0.625000 -0.187500
v -0.500000 0.375000 0.187500
v -0.500000 0.375000 -0.187500
v -0.500000 0.625000 0.187500
v -0.500000 0.375000 -0.125000
v -0.500000 0.375000 0.125000
v -0.500000 0.625000 0.125000
v -0.500000 0.625000 -0.125000
vt 0.687500 0.562500
vt 0.687500 0.937500
vt 0.562500 0.937500
vt 0.562500 0.562500
vt 0.062500 0.437500
vt 0.062500 0.062500
vt 0.437500 0.062500
vt 0.437500 0.437500
vt 0.125000 0.062500
vt 0.125000 0.125000
vt 0.125000 0.375000
vt 0.125000 0.437500
vt 0.375000 0.437500
vt 0.375000 0.375000
vt 0.375000 0.062500
vt 0.375000 0.125000
vt 0.875000 0.937500
vt 0.750000 0.937500
vt 0.750000 0.562500
vt 0.875000 0.562500
vt 0.875000 0.625000
vt 0.875000 0.875000
usemtl None
s off
f 61/49/2 64/50/2 50/51/2 49/52/2
f 64/49/6 63/50/6 51/51/6 50/52/6
f 63/49/4 62/50/4 52/51/4 51/52/4
f 62/49/5 61/50/5 49/51/5 52/52/5
f 49/53/3 50/54/3 51/55/3 52/56/3
f 54/53/1 53/54/1 66/57/1 70/58/1 69/59/1 67/60/1
f 65/61/1 67/60/1 69/59/1 72/62/1
f 70/58/1 66/57/1 68/63/1 71/64/1
f 56/55/1 55/56/1 65/61/1 72/62/1 71/64/1 68/63/1
f 53/65/5 58/66/5 60/67/5 56/68/5 68/69/5 66/70/5
f 55/65/6 59/66/6 57/67/6 54/68/6 67/69/6 65/70/6
f 57/56/3 59/53/3 60/54/3 58/55/3
f 54/65/2 57/66/2 58/67/2 53/68/2
f 59/66/4 55/65/4 56/68/4 60/67/4
f 62/55/1 63/56/1 64/53/1 61/54/1
g downInsulation
v -0.187500 0.312500 -0.187500
v -0.187500 0.312500 0.187500
v 0.187500 0.312500 0.187500
v 0.187500 0.312500 -0.187500
v -0.187500 0.000000 -0.187500
v -0.187500 0.000000 0.187500
v 0.187500 0.000000 0.187500
v 0.187500 0.000000 -0.187500
v -0.187500 0.125000 0.187500
v -0.187500 0.125000 -0.187500
v 0.187500 0.125000 0.187500
v 0.187500 0.125000 -0.187500
v -0.187500 0.187500 -0.187500
v 0.187500 0.187500 -0.187500
v 0.187500 0.187500 0.187500
v -0.187500 0.187500 0.187500
v 0.125000 0.000000 0.187500
v -0.125000 0.000000 -0.187500
v -0.125000 0.000000 0.187500
v 0.125000 0.000000 -0.187500
v -0.125000 0.000000 0.125000
v -0.125000 0.000000 -0.125000
v 0.125000 0.000000 -0.125000
v 0.125000 0.000000 0.125000
vt 0.687500 0.562500
vt 0.687500 0.937500
vt 0.562500 0.937500
vt 0.562500 0.562500
vt 0.062500 0.437500
vt 0.062500 0.062500
vt 0.437500 0.062500
vt 0.437500 0.437500
vt 0.125000 0.062500
vt 0.125000 0.125000
vt 0.125000 0.375000
vt 0.125000 0.437500
vt 0.375000 0.437500
vt 0.375000 0.375000
vt 0.375000 0.062500
vt 0.375000 0.125000
vt 0.875000 0.937500
vt 0.750000 0.937500
vt 0.750000 0.562500
vt 0.875000 0.562500
vt 0.875000 0.625000
vt 0.875000 0.875000
usemtl None
s off
f 85/71/1 88/72/1 74/73/1 73/74/1
f 88/71/5 87/72/5 75/73/5 74/74/5
f 87/71/3 86/72/3 76/73/3 75/74/3
f 86/71/6 85/72/6 73/73/6 76/74/6
f 73/75/4 74/76/4 75/77/4 76/78/4
f 78/75/2 77/76/2 90/79/2 94/80/2 93/81/2 91/82/2
f 89/83/2 91/82/2 93/81/2 96/84/2
f 94/80/2 90/79/2 92/85/2 95/86/2
f 80/77/2 79/78/2 89/83/2 96/84/2 95/86/2 92/85/2
f 77/87/6 82/88/6 84/89/6 80/90/6 92/91/6 90/92/6
f 79/87/5 83/88/5 81/89/5 78/90/5 91/91/5 89/92/5
f 81/78/4 83/75/4 84/76/4 82/77/4
f 78/87/1 81/88/1 82/89/1 77/90/1
f 83/88/3 79/87/3 80/90/3 84/89/3
f 86/77/2 87/78/2 88/75/2 85/76/2
g northInsulation
v -0.187500 0.312500 0.187500
v -0.187500 0.687500 0.187500
v 0.187500 0.687500 0.187500
v 0.187500 0.312500 0.187500
v -0.187500 0.312500 0.500000
v -0.187500 0.687500 0.500000
v 0.187500 0.687500 0.500000
v 0.187500 0.312500 0.500000
v -0.187500 0.687500 0.375000
v -0.187500 0.312500 0.375000
v 0.187500 0.687500 0.375000
v 0.187500 0.312500 0.375000
v -0.187500 0.312500 0.312500
v 0.187500 0.312500 0.312500
v 0.187500 0.687500 0.312500
v -0.187500 0.687500 0.312500
v 0.125000 0.687500 0.500000
v -0.125000 0.312500 0.500000
v -0.125000 0.687500 0.500000
v 0.125000 0.312500 0.500000
v -0.125000 0.625000 0.500000
v -0.125000 0.375000 0.500000
v 0.125000 0.375000 0.500000
v 0.125000 0.625000 0.500000
vt 0.687500 0.562500
vt 0.687500 0.937500
vt 0.562500 0.937500
vt 0.562500 0.562500
vt 0.062500 0.937500
vt 0.062500 0.562500
vt 0.437500 0.562500
vt 0.437500 0.937500
vt 0.062500 0.437500
vt 0.062500 0.062500
vt 0.125000 0.062500
vt 0.125000 0.125000
vt 0.125000 0.375000
vt 0.125000 0.437500
vt 0.375000 0.437500
vt 0.375000 0.375000
vt 0.375000 0.062500
vt 0.375000 0.125000
vt 0.437500 0.062500
vt 0.437500 0.437500
vt 0.875000 0.937500
vt 0.750000 0.937500
vt 0.750000 0.562500
vt 0.875000 0.562500
vt 0.875000 0.625000
vt 0.875000 0.875000
usemtl None
s off
f 109/93/1 112/94/1 98/95/1 97/96/1
f 112/93/4 111/94/4 99/95/4 98/96/4
f 111/93/3 110/94/3 100/95/3 99/96/3
f 110/93/2 109/94/2 97/95/2 100/96/2
f 97/97/6 98/98/6 99/99/6 100/100/6
f 102/101/5 101/102/5 114/103/5 118/104/5 117/105/5 115/106/5
f 113/107/5 115/106/5 117/105/5 120/108/5
f 118/104/5 114/103/5 116/109/5 119/110/5
f 104/111/5 103/112/5 113/107/5 120/108/5 119/110/5 116/109/5
f 101/113/2 106/114/2 108/115/2 104/116/2 116/117/2 114/118/2
f 103/113/4 107/114/4 105/115/4 102/116/4 115/117/4 113/118/4
f 105/100/6 107/97/6 108/98/6 106/99/6
f 102/113/1 105/114/1 106/115/1 101/116/1
f 107/114/3 103/113/3 104/116/3 108/115/3
f 110/99/5 111/100/5 112/97/5 109/98/5
g upInsulation
v -0.187500 0.687500 0.187500
v -0.187500 0.687500 -0.187500
v 0.187500 0.687500 -0.187500
v 0.187500 0.687500 0.187500
v -0.187500 1.000000 0.187500
v -0.187500 1.000000 -0.187500
v 0.187500 1.000000 -0.187500
v 0.187500 1.000000 0.187500
v -0.187500 0.875000 -0.187500
v -0.187500 0.875000 0.187500
v 0.187500 0.875000 -0.187500
v 0.187500 0.875000 0.187500
v -0.187500 0.812500 0.187500
v 0.187500 0.812500 0.187500
v 0.187500 0.812500 -0.187500
v -0.187500 0.812500 -0.187500
v 0.125000 1.000000 -0.187500
v -0.125000 1.000000 0.187500
v -0.125000 1.000000 -0.187500
v 0.125000 1.000000 0.187500
v -0.125000 1.000000 -0.125000
v -0.125000 1.000000 0.125000
v 0.125000 1.000000 0.125000
v 0.125000 1.000000 -0.125000
vt 0.687500 0.562500
vt 0.687500 0.937500
vt 0.562500 0.937500
vt 0.562500 0.562500
vt 0.062500 0.437500
vt 0.062500 0.062500
vt 0.437500 0.062500
vt 0.437500 0.437500
vt 0.125000 0.062500
vt 0.125000 0.125000
vt 0.125000 0.375000
vt 0.125000 0.437500
vt 0.375000 0.437500
vt 0.375000 0.375000
vt 0.375000 0.062500
vt 0.375000 0.125000
vt 0.875000 0.937500
vt 0.750000 0.937500
vt 0.750000 0.562500
vt 0.875000 0.562500
vt 0.875000 0.625000
vt 0.875000 0.875000
usemtl None
s off
f 133/119/1 136/120/1 122/121/1 121/122/1
f 136/119/6 135/120/6 123/121/6 122/122/6
f 135/119/3 134/120/3 124/121/3 123/122/3
f 134/119/5 133/120/5 121/121/5 124/122/5
f 121/123/2 122/124/2 123/125/2 124/126/2
f 126/123/4 125/124/4 138/127/4 142/128/4 141/129/4 139/130/4
f 137/131/4 139/130/4 141/129/4 144/132/4
f 142/128/4 138/127/4 140/133/4 143/134/4
f 128/125/4 127/126/4 137/131/4 144/132/4 143/134/4 140/133/4
f 125/135/5 130/136/5 132/137/5 128/138/5 140/139/5 138/140/5
f 127/135/6 131/136/6 129/137/6 126/138/6 139/139/6 137/140/6
f 129/126/2 131/123/2 132/124/2 130/125/2
f 126/135/1 129/136/1 130/137/1 125/138/1
f 131/136/3 127/135/3 128/138/3 132/137/3
f 134/125/4 135/126/4 136/123/4 133/124/4
g centerInsulation
v -0.187500 0.312500 0.187500
v -0.187500 0.312500 -0.187500
v 0.187500 0.312500 -0.187500
v 0.187500 0.312500 0.187500
v -0.187500 0.687500 0.187500
v -0.187500 0.687500 -0.187500
v 0.187500 0.687500 -0.187500
v 0.187500 0.687500 0.187500
vt 0.062500 0.562500
vt 0.437500 0.562500
vt 0.437500 0.937500
vt 0.062500 0.937500
usemtl None
s off
f 149/141/1 150/142/1 146/143/1 145/144/1
f 150/141/6 151/142/6 147/143/6 146/144/6
f 151/141/3 152/142/3 148/143/3 147/144/3
f 152/143/5 149/144/5 145/141/5 148/142/5
f 145/144/2 146/141/2 147/142/2 148/143/2
f 152/142/4 151/143/4 150/144/4 149/141/4
g down
v -0.125000 0.000000 0.125000
v 0.125000 0.000000 0.125000
v 0.125000 0.375000 0.125000
v -0.125000 0.375000 0.125000
v -0.125000 0.000000 -0.125000
v 0.125000 0.000000 -0.125000
v 0.125000 0.375000 -0.125000
v -0.125000 0.375000 -0.125000
vt 0.281250 0.687500
vt 0.156250 0.687500
vt 0.156250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.375000
vt 0.406250 0.375000
vt 0.406250 0.562500
vt 0.406250 0.687500
vt 0.531250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.031250 0.375000
vt 0.031250 0.562500
usemtl None_Wire
s off
f 157/145/2 158/146/2 154/147/2 153/148/2
f 158/148/3 159/149/3 155/150/3 154/151/3
f 159/152/4 160/145/4 156/148/4 155/151/4
f 160/151/1 157/150/1 153/153/1 156/154/1
f 153/148/5 154/147/5 155/155/5 156/149/5
f 160/156/6 159/155/6 158/147/6 157/157/6
g up
v -0.125000 1.000000 -0.125000
v 0.125000 1.000000 -0.125000
v 0.125000 0.625000 -0.125000
v -0.125000 0.625000 -0.125000
v -0.125000 1.000000 0.125000
v 0.125000 1.000000 0.125000
v 0.125000 0.625000 0.125000
v -0.125000 0.625000 0.125000
vt 0.281250 0.687500
vt 0.156250 0.687500
vt 0.156250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.375000
vt 0.406250 0.375000
vt 0.406250 0.562500
vt 0.406250 0.687500
vt 0.531250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.031250 0.375000
vt 0.031250 0.562500
usemtl None_Wire
s off
f 165/158/4 166/159/4 162/160/4 161/161/4
f 166/161/3 167/162/3 163/163/3 162/164/3
f 167/165/2 168/158/2 164/161/2 163/164/2
f 168/164/1 165/163/1 161/166/1 164/167/1
f 161/161/6 162/160/6 163/168/6 164/162/6
f 168/169/5 167/168/5 166/160/5 165/170/5
g west
v -0.500000 0.375000 0.125000
v -0.500000 0.375000 -0.125000
v -0.125000 0.375000 -0.125000
v -0.125000 0.375000 0.125000
v -0.500000 0.625000 0.125000
v -0.500000 0.625000 -0.125000
v -0.125000 0.625000 -0.125000
v -0.125000 0.625000 0.125000
vt 0.281250 0.687500
vt 0.156250 0.687500
vt 0.156250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.375000
vt 0.406250 0.375000
vt 0.406250 0.562500
vt 0.406250 0.687500
vt 0.531250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.031250 0.375000
vt 0.031250 0.562500
usemtl None_Wire
s off
f 173/171/1 174/172/1 170/173/1 169/174/1
f 174/174/6 175/175/6 171/176/6 170/177/6
f 175/178/3 176/171/3 172/174/3 171/177/3
f 176/177/5 173/176/5 169/179/5 172/180/5
f 169/174/2 170/173/2 171/181/2 172/175/2
f 176/182/4 175/181/4 174/173/4 173/183/4
g east
v 0.500000 0.375000 -0.125000
v 0.500000 0.375000 0.125000
v 0.125000 0.375000 0.125000
v 0.125000 0.375000 -0.125000
v 0.500000 0.625000 -0.125000
v 0.500000 0.625000 0.125000
v 0.125000 0.625000 0.125000
v 0.125000 0.625000 -0.125000
vt 0.281250 0.687500
vt 0.156250 0.687500
vt 0.156250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.375000
vt 0.406250 0.375000
vt 0.406250 0.562500
vt 0.406250 0.687500
vt 0.531250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.031250 0.375000
vt 0.031250 0.562500
usemtl None_Wire
s off
f 181/184/3 182/185/3 178/186/3 177/187/3
f 182/187/5 183/188/5 179/189/5 178/190/5
f 183/191/1 184/184/1 180/187/1 179/190/1
f 184/190/6 181/189/6 177/192/6 180/193/6
f 177/187/2 178/186/2 179/194/2 180/188/2
f 184/195/4 183/194/4 182/186/4 181/196/4
g north
v 0.125000 0.375000 0.500000
v -0.125000 0.375000 0.500000
v -0.125000 0.375000 0.125000
v 0.125000 0.375000 0.125000
v 0.125000 0.625000 0.500000
v -0.125000 0.625000 0.500000
v -0.125000 0.625000 0.125000
v 0.125000 0.625000 0.125000
vt 0.281250 0.687500
vt 0.156250 0.687500
vt 0.156250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.375000
vt 0.406250 0.375000
vt 0.406250 0.562500
vt 0.406250 0.687500
vt 0.531250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.031250 0.375000
vt 0.031250 0.562500
usemtl None_Wire
s off
f 189/197/5 190/198/5 186/199/5 185/200/5
f 190/200/1 191/201/1 187/202/1 186/203/1
f 191/204/6 192/197/6 188/200/6 187/203/6
f 192/203/3 189/202/3 185/205/3 188/206/3
f 185/200/2 186/199/2 187/207/2 188/201/2
f 192/208/4 191/207/4 190/199/4 189/209/4
g south
v -0.125000 0.375000 -0.500000
v 0.125000 0.375000 -0.500000
v 0.125000 0.375000 -0.125000
v -0.125000 0.375000 -0.125000
v -0.125000 0.625000 -0.500000
v 0.125000 0.625000 -0.500000
v 0.125000 0.625000 -0.125000
v -0.125000 0.625000 -0.125000
vt 0.281250 0.687500
vt 0.156250 0.687500
vt 0.156250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.375000
vt 0.406250 0.375000
vt 0.406250 0.562500
vt 0.406250 0.687500
vt 0.531250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.031250 0.375000
vt 0.031250 0.562500
usemtl None_Wire
s off
f 197/210/6 198/211/6 194/212/6 193/213/6
f 198/213/3 199/214/3 195/215/3 194/216/3
f 199/217/5 200/210/5 196/213/5 195/216/5
f 200/216/1 197/215/1 193/218/1 196/219/1
f 193/213/2 194/212/2 195/220/2 196/214/2
f 200/221/4 199/220/4 198/212/4 197/222/4
g center
v -0.125000 0.375000 0.125000
v -0.125000 0.375000 -0.125000
v 0.125000 0.375000 -0.125000
v 0.125000 0.375000 0.125000
v -0.125000 0.625000 0.125000
v -0.125000 0.625000 -0.125000
v 0.125000 0.625000 -0.125000
v 0.125000 0.625000 0.125000
vt 0.281250 0.843750
vt 0.156250 0.843750
vt 0.156250 0.718750
vt 0.281250 0.718750
vt 0.406250 0.843750
vt 0.406250 0.718750
vt 0.531250 0.718750
vt 0.531250 0.843750
vt 0.031250 0.843750
vt 0.031250 0.718750
vt 0.406250 0.968750
vt 0.281250 0.968750
vt 0.156250 0.968750
usemtl None_ 1
s off
f 205/223/1 206/224/1 202/225/1 201/226/1
f 206/227/6 207/228/6 203/229/6 202/230/6
f 207/224/3 208/231/3 204/232/3 203/225/3
f 208/223/5 205/226/5 201/228/5 204/227/5
f 201/233/2 202/234/2 203/223/2 204/227/2
f 208/224/4 207/223/4 206/234/4 205/235/4

View file

@ -1,522 +0,0 @@
# Blender v2.66 (sub 1) OBJ File: 'wireShine.blend'
# www.blender.org
mtllib wireShine.mtl
g down
v -0.126250 0.000000 0.126250
v 0.126250 0.000000 0.126250
v 0.126250 0.374464 0.126250
v -0.126250 0.374464 0.126250
v -0.126250 0.000000 -0.126250
v 0.126250 0.000000 -0.126250
v 0.126250 0.374464 -0.126250
v -0.126250 0.374464 -0.126250
v 0.126250 0.187232 -0.126250
v -0.126250 0.000000 -0.000000
v -0.000000 0.187232 0.126250
v -0.126250 0.187232 0.126250
v -0.000000 0.000000 0.126250
v -0.126250 0.187232 -0.126250
v -0.000000 0.374464 0.126250
v 0.126250 0.000000 -0.000000
v 0.126250 0.187232 0.126250
v -0.126250 0.374464 -0.000000
v -0.000000 0.000000 -0.126250
v 0.126250 0.374464 -0.000000
v -0.126250 0.187232 -0.000000
v 0.126250 0.187232 -0.000000
v -0.000000 0.187232 -0.126250
v -0.000000 0.374464 -0.126250
vt 0.218750 0.468750
vt 0.218750 0.375000
vt 0.281250 0.375000
vt 0.281250 0.468750
vt 0.343750 0.468750
vt 0.343750 0.562500
vt 0.281250 0.562500
vt 0.093750 0.468750
vt 0.031250 0.468750
vt 0.031250 0.375000
vt 0.093750 0.375000
vt 0.406250 0.468750
vt 0.406250 0.562500
vt 0.531250 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.531250 0.375000
vt 0.218750 0.562500
vt 0.343750 0.375000
vt 0.406250 0.375000
vt 0.468750 0.562500
vt 0.156250 0.468750
vt 0.156250 0.375000
vt 0.531250 0.562500
vt 0.156250 0.562500
vt 0.093750 0.562500
vt 0.031250 0.562500
vn -0.000000 -0.000000 1.000000
vn 1.000000 -0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 -0.000000
usemtl None
s off
f 11/1/1 15/2/1 4/3/1 12/4/1
f 9/4/2 22/5/2 16/6/2 6/7/2
f 23/8/3 14/9/3 8/10/3 24/11/3
f 22/5/2 17/12/2 2/13/2 16/6/2
f 12/14/4 21/15/4 10/16/4 1/17/4
f 13/18/1 11/1/1 12/4/1 1/7/1
f 20/19/2 3/20/2 17/12/2 22/5/2
f 18/21/4 8/13/4 14/12/4 21/15/4
f 17/22/1 3/23/1 15/2/1 11/1/1
f 4/24/4 18/21/4 21/15/4 12/14/4
f 21/15/4 14/12/4 5/20/4 10/16/4
f 6/25/3 19/26/3 23/8/3 9/22/3
f 9/22/3 23/8/3 24/11/3 7/23/3
f 2/25/1 17/22/1 11/1/1 13/18/1
f 19/26/3 5/27/3 14/9/3 23/8/3
f 7/3/2 20/19/2 22/5/2 9/4/2
g up
v -0.126250 1.000000 -0.126250
v 0.126250 1.000000 -0.126250
v 0.126250 0.626964 -0.126250
v -0.126250 0.626964 -0.126250
v -0.126250 1.000000 0.126250
v 0.126250 1.000000 0.126250
v 0.126250 0.626964 0.126250
v -0.126250 0.626964 0.126250
v -0.126250 0.813482 -0.126250
v -0.126250 1.000000 -0.000000
v -0.126250 0.813482 0.126250
v 0.000000 0.626964 -0.126250
v -0.000000 1.000000 -0.126250
v -0.126250 0.626964 -0.000000
v -0.000000 0.626964 0.126250
v 0.126250 0.813482 -0.126250
v 0.126250 0.813482 -0.000000
v -0.126250 0.813482 -0.000000
v 0.126250 1.000000 -0.000000
v 0.126250 0.626964 -0.000000
v 0.126250 0.813482 0.126250
v -0.000000 0.813482 0.126250
v -0.000000 0.813482 -0.126250
v -0.000000 1.000000 0.126250
vt 0.406250 0.468750
vt 0.406250 0.562500
vt 0.343750 0.562500
vt 0.343750 0.468750
vt 0.156250 0.468750
vt 0.156250 0.562500
vt 0.093750 0.562500
vt 0.093750 0.468750
vt 0.406250 0.375000
vt 0.343750 0.375000
vt 0.468750 0.468750
vt 0.468750 0.562500
vt 0.218750 0.468750
vt 0.218750 0.375000
vt 0.281250 0.375000
vt 0.281250 0.468750
vt 0.031250 0.562500
vt 0.031250 0.468750
vt 0.468750 0.375000
vt 0.531250 0.468750
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.218750 0.562500
vt 0.281250 0.562500
vt 0.531250 0.375000
vt 0.093750 0.375000
vt 0.031250 0.375000
usemtl None
s off
f 40/28/2 26/29/2 43/30/2 41/31/2
f 45/32/1 30/33/1 48/34/1 46/35/1
f 27/36/2 40/28/2 41/31/2 44/37/2
f 35/28/4 42/38/4 38/39/4 32/29/4
f 47/40/3 36/41/3 28/42/3 33/43/3
f 46/35/1 48/34/1 29/44/1 35/45/1
f 29/36/4 34/46/4 42/38/4 35/28/4
f 42/38/4 33/47/4 28/48/4 38/39/4
f 40/32/3 27/49/3 36/41/3 47/40/3
f 37/50/3 47/40/3 33/43/3 25/51/3
f 44/37/2 41/31/2 45/43/2 31/42/2
f 34/46/4 25/52/4 33/47/4 42/38/4
f 26/33/3 40/32/3 47/40/3 37/50/3
f 39/53/1 46/35/1 35/45/1 32/54/1
f 31/49/1 45/32/1 46/35/1 39/53/1
f 41/31/2 43/30/2 30/51/2 45/43/2
g west
v 0.500000 0.374464 -0.126250
v 0.500000 0.374464 0.126250
v 0.126250 0.374464 0.126250
v 0.126250 0.374464 -0.126250
v 0.500000 0.626964 -0.126250
v 0.500000 0.626964 0.126250
v 0.126250 0.626964 0.126250
v 0.126250 0.626964 -0.126250
v 0.126250 0.626964 0.000000
v 0.313125 0.374464 0.126250
v 0.126250 0.500714 0.126250
v 0.313125 0.374464 0.000000
v 0.313125 0.626964 0.126250
v 0.500000 0.500714 -0.126250
v 0.313125 0.626964 0.000000
v 0.313125 0.500714 -0.126250
v 0.500000 0.374464 0.000000
v 0.500000 0.500714 0.126250
v 0.313125 0.500714 0.126250
v 0.313125 0.626964 -0.126250
v 0.500000 0.626964 0.000000
v 0.313125 0.374464 -0.126250
v 0.126250 0.374464 0.000000
v 0.126250 0.500714 -0.126250
vt 0.406250 0.468750
vt 0.343750 0.468750
vt 0.343750 0.375000
vt 0.406250 0.375000
vt 0.218750 0.562500
vt 0.156250 0.562500
vt 0.156250 0.468750
vt 0.218750 0.468750
vt 0.406250 0.562500
vt 0.343750 0.562500
vt 0.281250 0.468750
vt 0.281250 0.375000
vt 0.281250 0.562500
vt 0.468750 0.375000
vt 0.531250 0.375000
vt 0.531250 0.468750
vt 0.468750 0.468750
vt 0.468750 0.562500
vt 0.093750 0.562500
vt 0.093750 0.468750
vt 0.531250 0.562500
vt 0.093750 0.375000
vt 0.031250 0.468750
vt 0.031250 0.375000
vt 0.031250 0.562500
vt 0.218750 0.375000
vt 0.156250 0.375000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 -0.000000
usemtl None
s off
f 58/55/1 67/56/1 59/57/1 51/58/1
f 65/59/5 50/60/5 58/61/5 60/62/5
f 50/63/1 66/64/1 67/56/1 58/55/1
f 67/56/1 61/65/1 55/66/1 59/57/1
f 66/64/1 54/67/1 61/65/1 67/56/1
f 62/68/3 49/69/3 70/70/3 64/71/3
f 68/55/3 64/71/3 72/72/3 56/63/3
f 53/58/3 62/68/3 64/71/3 68/55/3
f 61/61/6 54/60/6 69/73/6 63/74/6
f 49/67/5 65/59/5 60/62/5 70/65/5
f 64/71/3 70/70/3 52/75/3 72/72/3
f 57/76/6 63/74/6 68/77/6 56/78/6
f 63/74/6 69/73/6 53/79/6 68/77/6
f 70/65/5 60/62/5 71/80/5 52/66/5
f 60/62/5 58/61/5 51/81/5 71/80/5
f 55/81/6 61/61/6 63/74/6 57/76/6
g east
v -0.500000 0.374460 0.126250
v -0.500000 0.374460 -0.126250
v -0.126250 0.374464 -0.126250
v -0.126250 0.374464 0.126250
v -0.500000 0.626960 0.126250
v -0.500000 0.626960 -0.126250
v -0.126250 0.626964 -0.126250
v -0.126250 0.626964 0.126250
v -0.313125 0.374462 0.126250
v -0.126250 0.500714 -0.126250
v -0.313125 0.626962 0.126250
v -0.313125 0.626962 -0.126250
v -0.500000 0.500710 0.126250
v -0.126250 0.374464 -0.000000
v -0.126250 0.500714 0.126250
v -0.500000 0.374460 -0.000000
v -0.500000 0.500710 -0.126250
v -0.313125 0.626962 -0.000000
v -0.126250 0.626964 -0.000000
v -0.313125 0.374462 -0.000000
v -0.313125 0.500712 0.126250
v -0.313125 0.500712 -0.126250
v -0.313125 0.374462 -0.126250
v -0.500000 0.626960 -0.000000
vt 0.281250 0.562500
vt 0.281250 0.468750
vt 0.343750 0.468750
vt 0.343750 0.562500
vt 0.031250 0.468750
vt 0.093750 0.468750
vt 0.093750 0.562500
vt 0.031250 0.562500
vt 0.218750 0.562500
vt 0.156250 0.562500
vt 0.156250 0.468750
vt 0.218750 0.468750
vt 0.343750 0.375000
vt 0.406250 0.375000
vt 0.406250 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.531250 0.375000
vt 0.531250 0.468750
vt 0.218750 0.375000
vt 0.281250 0.375000
vt 0.468750 0.562500
vt 0.531250 0.562500
vt 0.156250 0.375000
vt 0.406250 0.562500
vt 0.093750 0.375000
vt 0.031250 0.375000
vn -0.000011 1.000000 -0.000000
vn 0.000011 -1.000000 0.000000
vn 0.000012 -1.000000 0.000000
usemtl None
s off
f 78/82/3 84/83/3 94/84/3 89/85/3
f 83/86/7 90/87/7 96/88/7 77/89/7
f 88/90/8 74/91/8 95/92/8 92/93/8
f 94/84/3 82/94/3 75/95/3 95/96/3
f 93/97/1 85/98/1 73/99/1 81/100/1
f 81/83/9 92/93/9 86/101/9 76/102/9
f 84/83/3 79/102/3 82/94/3 94/84/3
f 87/103/1 93/97/1 81/100/1 76/104/1
f 83/96/1 77/95/1 85/98/1 93/97/1
f 92/93/9 95/92/9 75/105/9 86/101/9
f 80/106/1 83/96/1 93/97/1 87/103/1
f 73/82/8 88/90/8 92/93/8 81/83/8
f 90/87/7 84/92/7 78/91/7 96/88/7
f 91/107/7 79/105/7 84/92/7 90/87/7
f 80/108/7 91/107/7 90/87/7 83/86/7
f 89/85/3 94/84/3 95/96/3 74/106/3
g north
v -0.126250 0.374464 -0.500000
v 0.126250 0.374464 -0.500000
v 0.126250 0.374464 -0.126250
v -0.126250 0.374464 -0.126250
v -0.126250 0.626964 -0.500000
v 0.126250 0.626964 -0.500000
v 0.126250 0.626964 -0.126250
v -0.126250 0.626964 -0.126250
v 0.000000 0.626964 -0.500000
v 0.126250 0.500714 -0.500000
v 0.000000 0.374464 -0.500000
v -0.126250 0.500714 -0.500000
v 0.126250 0.626964 -0.313125
v 0.126250 0.500714 -0.126250
v 0.126250 0.374464 -0.313125
v 0.000000 0.626964 -0.126250
v -0.126250 0.500714 -0.126250
v 0.000000 0.374464 -0.126250
v -0.126250 0.626964 -0.313125
v -0.126250 0.374464 -0.313125
v 0.126250 0.500714 -0.313125
v -0.126250 0.500714 -0.313125
v 0.000000 0.374464 -0.313125
v 0.000000 0.626964 -0.313125
vt 0.343750 0.468750
vt 0.343750 0.375000
vt 0.406250 0.375000
vt 0.406250 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.531250 0.375000
vt 0.531250 0.468750
vt 0.218750 0.468750
vt 0.156250 0.468750
vt 0.156250 0.375000
vt 0.218750 0.375000
vt 0.093750 0.468750
vt 0.156250 0.562500
vt 0.093750 0.562500
vt 0.343750 0.562500
vt 0.406250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.468750
vt 0.281250 0.375000
vt 0.468750 0.562500
vt 0.531250 0.562500
vt 0.218750 0.562500
vt 0.031250 0.468750
vt 0.031250 0.562500
vt 0.031250 0.375000
vt 0.093750 0.375000
usemtl None
s off
f 117/109/2 110/110/2 99/111/2 111/112/2
f 118/113/4 108/114/4 97/115/4 116/116/4
f 119/117/5 111/118/5 99/119/5 114/120/5
f 120/121/6 109/118/6 102/122/6 105/123/6
f 106/124/2 117/109/2 111/112/2 98/125/2
f 102/126/2 109/127/2 117/109/2 106/124/2
f 109/127/2 103/128/2 110/110/2 117/109/2
f 113/129/4 118/113/4 116/116/4 100/130/4
f 104/125/4 115/112/4 118/113/4 113/129/4
f 115/112/4 101/111/4 108/114/4 118/113/4
f 116/127/5 119/117/5 114/120/5 100/128/5
f 97/126/5 107/131/5 119/117/5 116/127/5
f 107/131/5 98/122/5 111/118/5 119/117/5
f 115/132/6 120/121/6 105/123/6 101/133/6
f 104/134/6 112/135/6 120/121/6 115/132/6
f 112/135/6 103/119/6 109/118/6 120/121/6
g south
v 0.126250 0.374464 0.500000
v -0.126250 0.374464 0.500000
v -0.126250 0.374464 0.126250
v 0.126250 0.374464 0.126250
v 0.126250 0.626964 0.500000
v -0.126250 0.626964 0.500000
v -0.126250 0.626964 0.126250
v 0.126250 0.626964 0.126250
v -0.000000 0.626964 0.500000
v -0.126250 0.500714 0.500000
v -0.000000 0.374464 0.500000
v 0.126250 0.500714 0.500000
v -0.126250 0.626964 0.313125
v -0.126250 0.500714 0.126250
v -0.126250 0.374464 0.313125
v -0.000000 0.626964 0.126250
v 0.126250 0.500714 0.126250
v -0.000000 0.374464 0.126250
v 0.126250 0.626964 0.313125
v 0.126250 0.374464 0.313125
v -0.126250 0.500714 0.313125
v 0.126250 0.500714 0.313125
v -0.000000 0.374464 0.313125
v -0.000000 0.626964 0.313125
vt 0.343750 0.468750
vt 0.343750 0.375000
vt 0.406250 0.375000
vt 0.406250 0.468750
vt 0.468750 0.468750
vt 0.468750 0.375000
vt 0.531250 0.375000
vt 0.531250 0.468750
vt 0.218750 0.468750
vt 0.156250 0.468750
vt 0.156250 0.375000
vt 0.218750 0.375000
vt 0.093750 0.468750
vt 0.156250 0.562500
vt 0.093750 0.562500
vt 0.343750 0.562500
vt 0.406250 0.562500
vt 0.281250 0.562500
vt 0.281250 0.468750
vt 0.281250 0.375000
vt 0.468750 0.562500
vt 0.531250 0.562500
vt 0.218750 0.562500
vt 0.031250 0.468750
vt 0.031250 0.562500
vt 0.031250 0.375000
vt 0.093750 0.375000
usemtl None
s off
f 141/136/4 134/137/4 123/138/4 135/139/4
f 142/140/2 132/141/2 121/142/2 140/143/2
f 143/144/5 135/145/5 123/146/5 138/147/5
f 144/148/6 133/145/6 126/149/6 129/150/6
f 130/151/4 141/136/4 135/139/4 122/152/4
f 126/153/4 133/154/4 141/136/4 130/151/4
f 133/154/4 127/155/4 134/137/4 141/136/4
f 137/156/2 142/140/2 140/143/2 124/157/2
f 128/152/2 139/139/2 142/140/2 137/156/2
f 139/139/2 125/138/2 132/141/2 142/140/2
f 140/154/5 143/144/5 138/147/5 124/155/5
f 121/153/5 131/158/5 143/144/5 140/154/5
f 131/158/5 122/149/5 135/145/5 143/144/5
f 139/159/6 144/148/6 129/150/6 125/160/6
f 128/161/6 136/162/6 144/148/6 139/159/6
f 136/162/6 127/146/6 133/145/6 144/148/6
g center
v -0.126250 0.374464 0.126250
v -0.126250 0.374464 -0.126250
v 0.126250 0.374464 -0.126250
v 0.126250 0.374464 0.126250
v -0.126250 0.626964 0.126250
v -0.126250 0.626964 -0.126250
v 0.126250 0.626964 -0.126250
v 0.126250 0.626964 0.126250
v -0.126250 0.626964 0.000000
v -0.126250 0.500714 -0.126250
v -0.126250 0.374464 0.000000
v -0.126250 0.500714 0.126250
v 0.000000 0.626964 -0.126250
v 0.126250 0.500714 -0.126250
v 0.000000 0.374464 -0.126250
v 0.126250 0.626964 0.000000
v 0.126250 0.500714 0.126250
v 0.126250 0.374464 0.000000
v 0.000000 0.626964 0.126250
v 0.000000 0.374464 0.126250
v -0.126250 0.500714 0.000000
v 0.000000 0.500714 -0.126250
v 0.126250 0.500714 0.000000
v 0.000000 0.500714 0.126250
v 0.000000 0.374464 0.000000
v 0.000000 0.626964 0.000000
vt 0.218750 0.781250
vt 0.156250 0.781250
vt 0.156250 0.718750
vt 0.218750 0.718750
vt 0.468750 0.781250
vt 0.468750 0.718750
vt 0.531250 0.718750
vt 0.531250 0.781250
vt 0.093750 0.781250
vt 0.031250 0.781250
vt 0.031250 0.718750
vt 0.093750 0.718750
vt 0.343750 0.781250
vt 0.343750 0.718750
vt 0.406250 0.718750
vt 0.406250 0.781250
vt 0.343750 0.906250
vt 0.281250 0.906250
vt 0.281250 0.843750
vt 0.343750 0.843750
vt 0.218750 0.906250
vt 0.281250 0.968750
vt 0.218750 0.968750
vt 0.281250 0.781250
vt 0.281250 0.718750
vt 0.218750 0.843750
vt 0.156250 0.843750
vt 0.468750 0.843750
vt 0.531250 0.843750
vt 0.406250 0.843750
vt 0.093750 0.843750
vt 0.031250 0.843750
vt 0.406250 0.906250
vt 0.406250 0.968750
vt 0.343750 0.968750
vt 0.156250 0.906250
vt 0.156250 0.968750
usemtl None_Wire
s off
f 165/163/4 154/164/4 146/165/4 155/166/4
f 166/167/3 158/168/3 147/169/3 159/170/3
f 167/171/2 161/172/2 148/173/2 162/174/2
f 168/175/1 156/176/1 145/177/1 164/178/1
f 169/179/5 159/180/5 147/181/5 162/182/5
f 170/183/6 157/180/6 150/184/6 153/185/6
f 156/186/4 165/163/4 155/166/4 145/187/4
f 149/181/4 153/188/4 165/163/4 156/186/4
f 153/188/4 150/189/4 154/164/4 165/163/4
f 154/190/3 166/167/3 159/170/3 146/191/3
f 150/192/3 157/178/3 166/167/3 154/190/3
f 157/178/3 151/177/3 158/168/3 166/167/3
f 158/164/2 167/171/2 162/174/2 147/165/2
f 151/189/2 160/193/2 167/171/2 158/164/2
f 160/193/2 152/194/2 161/172/2 167/171/2
f 161/182/1 168/175/1 164/178/1 148/192/1
f 152/181/1 163/186/1 168/175/1 161/182/1
f 163/186/1 149/187/1 156/176/1 168/175/1
f 164/195/5 169/179/5 162/182/5 148/192/5
f 145/196/5 155/197/5 169/179/5 164/195/5
f 155/197/5 146/184/5 159/180/5 169/179/5
f 163/198/6 170/183/6 153/185/6 149/199/6
f 152/189/6 160/188/6 170/183/6 163/198/6
f 160/188/6 151/181/6 157/180/6 170/183/6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB