mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
commit
9eb4cbe6c9
@ -689,6 +689,7 @@ public class ModBlocks {
|
||||
public static Block foundry_channel;
|
||||
public static Block foundry_tank;
|
||||
public static Block foundry_outlet;
|
||||
public static Block machine_strand_caster;
|
||||
public static Block foundry_slagtap;
|
||||
public static Block slag;
|
||||
|
||||
@ -1830,6 +1831,7 @@ public class ModBlocks {
|
||||
machine_stirling_steel = new MachineStirling().setBlockName("machine_stirling_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_stirling_creative = new MachineStirling().setBlockName("machine_stirling_creative").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_sawmill = new MachineSawmill().setBlockName("machine_sawmill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_strand_caster = new MachineStrandCaster().setBlockName("machine_strand_caster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||
machine_crucible = new MachineCrucible().setBlockName("machine_crucible").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire");
|
||||
machine_boiler = new MachineHeatBoiler().setBlockName("machine_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper");
|
||||
machine_industrial_boiler = new MachineHeatBoilerIndustrial().setBlockName("machine_industrial_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
@ -3114,6 +3116,7 @@ public class ModBlocks {
|
||||
register(machine_stirling_creative);
|
||||
register(machine_sawmill);
|
||||
register(machine_crucible);
|
||||
register(machine_strand_caster);
|
||||
register(machine_boiler);
|
||||
register(machine_industrial_boiler);
|
||||
register(foundry_mold);
|
||||
|
||||
232
src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java
Normal file
232
src/main/java/com/hbm/blocks/machine/MachineStrandCaster.java
Normal file
@ -0,0 +1,232 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import api.hbm.block.ICrucibleAcceptor;
|
||||
import api.hbm.block.IToolable;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMold;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.TileEntityCrucible;
|
||||
import com.hbm.tileentity.machine.TileEntityFoundryCastingBase;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineStrandCaster;
|
||||
import com.hbm.util.I18nUtil;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemTool;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcceptor, ILookOverlay, IToolable {
|
||||
|
||||
public MachineStrandCaster() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
//reminder, if the machine is a solid brick, get dimensions will already handle it without the need to use fillSapce
|
||||
//the order is up, down, forward, backward, left, right
|
||||
//x is for left(-)/right(+), z is for forward(+)/backward(-), y you already know
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[]{0, 0, 6, 0, 1, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if (meta >= 12) return new TileEntityMachineStrandCaster();
|
||||
if (meta >= 6) return new TileEntityProxyCombo(true, false, true).moltenMetal();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
super.fillSpace(world, x, y, z, dir, o);
|
||||
|
||||
x += dir.offsetX * o;
|
||||
z += dir.offsetZ * o;
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
//up,down;forward,backward;left,right
|
||||
MultiblockHandlerXR.fillSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, this, dir);
|
||||
//Fluid ports
|
||||
this.makeExtra(world, x + rot.offsetX - dir.offsetX, y, z + rot.offsetZ - dir.offsetZ);
|
||||
this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ);
|
||||
this.makeExtra(world, x - dir.offsetX * 5, y, z - dir.offsetZ * 5);
|
||||
this.makeExtra(world, x + rot.offsetX - dir.offsetX * 5, y, z + rot.offsetZ - dir.offsetZ * 5);
|
||||
//Molten slop ports
|
||||
this.makeExtra(world, x + rot.offsetX - dir.offsetX, y + 2, z + rot.offsetZ - dir.offsetZ);
|
||||
this.makeExtra(world, x - dir.offsetX, y + 2, z - dir.offsetZ);
|
||||
this.makeExtra(world, x + rot.offsetX, y + 2, z + rot.offsetZ);
|
||||
this.makeExtra(world, x, y + 2, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
|
||||
TileEntity poured = world.getTileEntity(x, y, z);
|
||||
if (!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo) poured).moltenMetal)) return false;
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if (pos == null) return false;
|
||||
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if (!(tile instanceof TileEntityMachineStrandCaster)) return false;
|
||||
TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile;
|
||||
|
||||
return caster.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mats.MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
|
||||
TileEntity poured = world.getTileEntity(x, y, z);
|
||||
if (!(poured instanceof TileEntityProxyCombo && ((TileEntityProxyCombo) poured).moltenMetal)) return stack;
|
||||
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if (pos == null) return stack;
|
||||
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if (!(tile instanceof TileEntityMachineStrandCaster)) return stack;
|
||||
TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) tile;
|
||||
|
||||
return caster.pour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mats.MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if (world.isRemote) {
|
||||
return true;
|
||||
}
|
||||
|
||||
int[] coords = findCore(world, x, y, z);
|
||||
TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]);
|
||||
if (cast != null) {
|
||||
//insert mold
|
||||
if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) {
|
||||
cast.slots[0] = player.getHeldItem().copy();
|
||||
cast.slots[0].stackSize = 1;
|
||||
player.getHeldItem().stackSize--;
|
||||
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F);
|
||||
cast.markDirty();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
if (player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool && player.getHeldItem().getItem().getToolClasses(player.getHeldItem()).contains("shovel")) {
|
||||
if (cast.amount > 0) {
|
||||
ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount));
|
||||
if (!player.inventory.addItemStackToInventory(scrap)) {
|
||||
EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap);
|
||||
world.spawnEntityInWorld(item);
|
||||
} else {
|
||||
player.inventoryContainer.detectAndSendChanges();
|
||||
}
|
||||
cast.amount = 0;
|
||||
cast.type = null;
|
||||
cast.markDirty();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return this.standardOpenBehavior(world, x, y, z, player, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block b, int i) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if (te instanceof TileEntityMachineStrandCaster) {
|
||||
TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) te;
|
||||
|
||||
if (cast.amount > 0) {
|
||||
ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(cast.type, cast.amount));
|
||||
EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, scrap);
|
||||
world.spawnEntityInWorld(item);
|
||||
cast.amount = 0; //just for safety
|
||||
}
|
||||
}
|
||||
super.breakBlock(world, x, y, z, b, i);
|
||||
}
|
||||
|
||||
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||
int[] coords = findCore(world, x, y, z);
|
||||
if (coords == null) return;
|
||||
|
||||
TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]);
|
||||
|
||||
List<String> text = new ArrayList();
|
||||
if (cast != null) {
|
||||
if (cast.slots[0] == null) {
|
||||
text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast"));
|
||||
} else if (cast.slots[0].getItem() == ModItems.mold) {
|
||||
ItemMold.Mold mold = ((ItemMold) cast.slots[0].getItem()).getMold(cast.slots[0]);
|
||||
text.add(EnumChatFormatting.BLUE + mold.getTitle());
|
||||
}
|
||||
}
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
x += dir.offsetX * o;
|
||||
z += dir.offsetZ * o;
|
||||
|
||||
if (!MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir)) return false;
|
||||
return MultiblockHandlerXR.checkSpace(world, x, y, z, new int[]{2, 0, 1, 0, 1, 0}, x, y, z, dir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
if (tool != ToolType.SCREWDRIVER)
|
||||
return false;
|
||||
|
||||
int[] coords = findCore(world, x, y, z);
|
||||
TileEntityMachineStrandCaster cast = (TileEntityMachineStrandCaster) world.getTileEntity(coords[0], coords[1], coords[2]);
|
||||
|
||||
if (cast.slots[0] == null)
|
||||
return false;
|
||||
|
||||
if (!player.inventory.addItemStackToInventory(cast.slots[0].copy())) {
|
||||
EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, cast.slots[0].copy());
|
||||
world.spawnEntityInWorld(item);
|
||||
} else {
|
||||
player.inventoryContainer.detectAndSendChanges();
|
||||
}
|
||||
|
||||
cast.markDirty();
|
||||
|
||||
cast.slots[0] = null;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,76 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotNonRetarded;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineStrandCaster;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerMachineStrandCaster extends Container {
|
||||
|
||||
protected TileEntityMachineStrandCaster caster;
|
||||
|
||||
public ContainerMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster caster) {
|
||||
this.caster = caster;
|
||||
|
||||
//the wretched mold
|
||||
this.addSlotToContainer(new SlotNonRetarded(this.caster, 0, 57, 62));
|
||||
|
||||
//output
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 2; j++) {
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, this.caster, j + i * 2 + 1, 125 + j * 18, 26 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 132 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 190));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = null;
|
||||
Slot slot = (Slot) this.inventorySlots.get(index);
|
||||
|
||||
if (slot != null && slot.getHasStack()) {
|
||||
ItemStack originalStack = slot.getStack();
|
||||
stack = originalStack.copy();
|
||||
|
||||
if (index <= 6) {
|
||||
if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 7, this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
slot.onSlotChange(originalStack, stack);
|
||||
|
||||
} else if (!InventoryUtil.mergeItemStack(this.inventorySlots, originalStack, 1, 2, false)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (originalStack.stackSize == 0) {
|
||||
slot.putStack(null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return caster.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import com.hbm.inventory.container.ContainerMachineStrandCaster;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineStrandCaster;
|
||||
import com.hbm.util.I18nUtil;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GUIMachineStrandCaster extends GuiInfoContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_strand_caster.png");
|
||||
private TileEntityMachineStrandCaster caster;
|
||||
|
||||
public GUIMachineStrandCaster(InventoryPlayer invPlayer, TileEntityMachineStrandCaster tedf) {
|
||||
super(new ContainerMachineStrandCaster(invPlayer, tedf));
|
||||
caster = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 214;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int x, int y, float interp) {
|
||||
super.drawScreen(x, y, interp);
|
||||
|
||||
drawStackInfo(x, y, 16, 17);
|
||||
|
||||
caster.water.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 14, 16, 24);
|
||||
caster.steam.renderTankInfo(this, x, y, guiLeft + 82, guiTop + 64, 16, 24);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.caster.hasCustomInventoryName() ? this.caster.getInventoryName() : I18n.format(this.caster.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
if (caster.amount != 0) {
|
||||
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
||||
|
||||
int targetHeight = Math.min((caster.amount) * 79 / caster.getCapacity(), 92);
|
||||
|
||||
int hex = caster.type.moltenColor;
|
||||
//hex = 0xC18336;
|
||||
Color color = new Color(hex);
|
||||
GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
|
||||
drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1F, 1F, 1F, 0.3F);
|
||||
drawTexturedModalRect(guiLeft + 17, guiTop + 93 - targetHeight, 176, 89 - targetHeight, 34, targetHeight);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
|
||||
}
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
GL11.glColor3f(255, 255, 255);
|
||||
|
||||
caster.water.renderTank(guiLeft + 82, guiTop + 38, this.zLevel, 16, 24);
|
||||
caster.steam.renderTank(guiLeft + 82, guiTop + 90, this.zLevel, 16, 24);
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected void drawStackInfo(int mouseX, int mouseY, int x, int y) {
|
||||
|
||||
List<String> list = new ArrayList();
|
||||
|
||||
if (caster.type == null) list.add(EnumChatFormatting.RED + "Empty");
|
||||
else
|
||||
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(caster.type.getUnlocalizedName()) + ": " + Mats.formatAmount(caster.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)));
|
||||
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + x, guiTop + y, 36, 81, mouseX, mouseY, list);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -447,6 +447,15 @@ public class AssemblerRecipes {
|
||||
new ComparableStack(ModItems.wire_red_copper, 24),
|
||||
new ComparableStack(ModItems.circuit_copper, 1)
|
||||
}, 300);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_strand_caster, 1), new AStack[] {
|
||||
new ComparableStack(ModItems.ingot_firebrick, 12),
|
||||
new OreDictStack(STEEL.plateCast(), 6),
|
||||
new OreDictStack(CU.plateWelded(), 2),
|
||||
new ComparableStack(ModItems.tank_steel, 2),
|
||||
new OreDictStack(ANY_CONCRETE.any(), 8)
|
||||
}, 100);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.piston_set, 1, EnumPistonType.STEEL.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 16),
|
||||
new OreDictStack(CU.plate(), 4),
|
||||
|
||||
@ -306,6 +306,7 @@ public class ClientProxy extends ServerProxy {
|
||||
//Foundry
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineStrandCaster.class, new RenderStrandCaster());
|
||||
//AMS
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSBase.class, new RenderAMSBase());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSEmitter.class, new RenderAMSEmitter());
|
||||
|
||||
@ -51,6 +51,9 @@ public class ResourceManager {
|
||||
public static final IModelCustom boiler_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/industrial_boiler.obj"));
|
||||
public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj"));
|
||||
|
||||
//Caster o' Strands
|
||||
public static final IModelCustom strand_caster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/strand_caster.obj"));
|
||||
|
||||
//Furnaces
|
||||
public static final IModelCustom furnace_iron = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_iron.obj"));
|
||||
public static final IModelCustom furnace_steel = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_steel.obj"));
|
||||
@ -449,6 +452,9 @@ public class ResourceManager {
|
||||
public static final ResourceLocation boiler_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/industrial_boiler.png");
|
||||
public static final ResourceLocation hephaestus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/hephaestus.png");
|
||||
|
||||
//Strand Caster
|
||||
public static final ResourceLocation strand_caster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/strand_caster.png");
|
||||
|
||||
//Furnaces
|
||||
public static final ResourceLocation furnace_iron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/furnace_iron.png");
|
||||
public static final ResourceLocation furnace_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/furnace_steel.png");
|
||||
|
||||
125
src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java
Normal file
125
src/main/java/com/hbm/render/tileentity/RenderStrandCaster.java
Normal file
@ -0,0 +1,125 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineStrandCaster;
|
||||
import net.minecraft.client.renderer.GLAllocation;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.awt.*;
|
||||
import java.nio.DoubleBuffer;
|
||||
|
||||
public class RenderStrandCaster extends TileEntitySpecialRenderer implements IItemRendererProvider {
|
||||
public static final ResourceLocation lava = new ResourceLocation(RefStrings.MODID, "textures/models/machines/lava_gray.png");
|
||||
private static DoubleBuffer buf = null;
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
|
||||
TileEntityMachineStrandCaster caster = (TileEntityMachineStrandCaster) te;
|
||||
|
||||
if(buf == null){
|
||||
buf = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer();
|
||||
}
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||
switch(te.getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 4: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
case 3: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
case 2: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
}
|
||||
GL11.glTranslated( 0.5, 0, 0.5);
|
||||
GL11.glRotated(180, 0, 1, 0);
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
|
||||
bindTexture(ResourceManager.strand_caster_tex);
|
||||
ResourceManager.strand_caster.renderPart("caster");
|
||||
|
||||
|
||||
if (caster.amount != 0 && caster.getInstalledMold() != null) {
|
||||
|
||||
double level = ((double) caster.amount / (double) caster.getCapacity()) * 0.675D;
|
||||
double offset = ((double) caster.amount / (double) caster.getInstalledMold().getCost()) * 0.375D;
|
||||
|
||||
int color = caster.type.moltenColor;
|
||||
|
||||
int r = color >> 16 & 0xFF;
|
||||
int g = color >> 8 & 0xFF;
|
||||
int b = color & 0xFF;
|
||||
|
||||
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glColor3f( r/ 255F, g/ 255F, b/ 255F);
|
||||
GL11.glEnable(GL11.GL_CLIP_PLANE0);
|
||||
buf.put(new double[] { 0, 0, -1, 0.5} );
|
||||
buf.rewind();
|
||||
GL11.glClipPlane(GL11.GL_CLIP_PLANE0, buf);
|
||||
GL11.glTranslated(0,0,-offset + 3.4);
|
||||
ResourceManager.strand_caster.renderPart("plate");
|
||||
GL11.glDisable(GL11.GL_CLIP_PLANE0);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||
Tessellator tess = Tessellator.instance;
|
||||
tess.setNormal(0F, 1F, 0F);
|
||||
tess.setColorOpaque_F(r / 255F, g / 255F, b / 255F);
|
||||
bindTexture(lava);
|
||||
tess.startDrawingQuads();
|
||||
tess.addVertexWithUV(-0.9, 2.3 + level, -0.999, 0, 0);
|
||||
tess.addVertexWithUV(-0.9, 2.3 + level, 0.999, 0, 1);
|
||||
tess.addVertexWithUV(0.9, 2.3 + level, 0.999, 1, 1);
|
||||
tess.addVertexWithUV(0.9, 2.3 + level, -0.999, 1, 0);
|
||||
tess.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glPopAttrib();
|
||||
}
|
||||
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemForRenderer() {
|
||||
return Item.getItemFromBlock(ModBlocks.machine_strand_caster);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(2, 0, 2);
|
||||
GL11.glScaled( 2, 2, 2);
|
||||
}
|
||||
public void renderCommon() {
|
||||
GL11.glScaled(1, 1, 1);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.strand_caster_tex); ResourceManager.strand_caster.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.tileentity;
|
||||
|
||||
|
||||
import api.hbm.block.ICrucibleAcceptor;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
@ -9,20 +10,23 @@ import api.hbm.energy.IEnergyConnector;
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.fluid.IFluidConnector;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource {
|
||||
public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergyUser, IFluidAcceptor, ISidedInventory, IFluidConnector, IHeatSource, ICrucibleAcceptor {
|
||||
|
||||
TileEntity tile;
|
||||
boolean inventory;
|
||||
boolean power;
|
||||
boolean fluid;
|
||||
boolean heat;
|
||||
public boolean moltenMetal;
|
||||
|
||||
public TileEntityProxyCombo() { }
|
||||
|
||||
@ -41,7 +45,10 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
|
||||
this.power = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public TileEntityProxyCombo moltenMetal() {
|
||||
this.moltenMetal = true;
|
||||
return this;
|
||||
}
|
||||
public TileEntityProxyCombo fluid() {
|
||||
this.fluid = true;
|
||||
return this;
|
||||
@ -425,6 +432,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
|
||||
this.inventory = nbt.getBoolean("inv");
|
||||
this.power = nbt.getBoolean("power");
|
||||
this.fluid = nbt.getBoolean("fluid");
|
||||
this.moltenMetal = nbt.getBoolean("metal");
|
||||
this.heat = nbt.getBoolean("heat");
|
||||
}
|
||||
|
||||
@ -435,6 +443,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
|
||||
nbt.setBoolean("inv", inventory);
|
||||
nbt.setBoolean("power", power);
|
||||
nbt.setBoolean("fluid", fluid);
|
||||
nbt.setBoolean("metal", moltenMetal);
|
||||
nbt.setBoolean("heat", heat);
|
||||
}
|
||||
|
||||
@ -497,4 +506,36 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy
|
||||
((IHeatSource)getTile()).useUpHeat(heat);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){
|
||||
return ((ICrucibleAcceptor)getTile()).canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mats.MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){
|
||||
return ((ICrucibleAcceptor)getTile()).pour(world, x, y, z, dX, dY, dZ, side, stack);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){
|
||||
return ((ICrucibleAcceptor)getTile()).canAcceptPartialFlow(world, x, y, z, side, stack);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mats.MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
if(this.moltenMetal && getTile() instanceof ICrucibleAcceptor){
|
||||
return ((ICrucibleAcceptor)getTile()).flow(world, x, y, z, side, stack);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -292,6 +292,7 @@ public class TileMappings {
|
||||
put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet");
|
||||
put(TileEntityFoundrySlagtap.class, "tileentity_foundry_slagtap");
|
||||
put(TileEntitySlag.class, "tileentity_foundry_slag");
|
||||
put(TileEntityMachineStrandCaster.class, "tileentity_strand_caster");
|
||||
|
||||
put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter");
|
||||
put(TileEntityMachineFunnel.class, "tileentity_funnel");
|
||||
|
||||
@ -158,7 +158,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
Vec3 impact = Vec3.createVectorHelper(0, 0, 0);
|
||||
MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(2), impact);
|
||||
MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(3), impact);
|
||||
|
||||
if(didPour != null) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
@ -198,7 +198,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
}
|
||||
|
||||
Vec3 impact = Vec3.createVectorHelper(0, 0, 0);
|
||||
MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(2), impact);
|
||||
MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact);
|
||||
|
||||
if(didPour != null) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
@ -8,6 +8,10 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityFoundryBasin extends TileEntityFoundryCastingBase implements IRenderFoundry {
|
||||
|
||||
public TileEntityFoundryBasin() {
|
||||
super(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
|
||||
@ -7,6 +7,7 @@ import com.hbm.items.machine.ItemMold.Mold;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
@ -19,8 +20,10 @@ import net.minecraftforge.common.util.ForgeDirection;
|
||||
*
|
||||
*/
|
||||
public abstract class TileEntityFoundryCastingBase extends TileEntityFoundryBase implements ISidedInventory {
|
||||
|
||||
public ItemStack slots[] = new ItemStack[2];
|
||||
public ItemStack[] slots;
|
||||
public TileEntityFoundryCastingBase(int slotCount) {
|
||||
slots = new ItemStack[slotCount];
|
||||
}
|
||||
public int cooloff = 100;
|
||||
|
||||
@Override
|
||||
|
||||
@ -4,6 +4,10 @@ import com.hbm.inventory.material.NTMMaterial;
|
||||
|
||||
public class TileEntityFoundryMold extends TileEntityFoundryCastingBase implements IRenderFoundry {
|
||||
|
||||
public TileEntityFoundryMold() {
|
||||
super(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
|
||||
@ -0,0 +1,333 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import api.hbm.block.ICrucibleAcceptor;
|
||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.inventory.container.ContainerMachineStrandCaster;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.gui.GUIMachineStrandCaster;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMold;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.packet.NBTPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
//god thank you bob for this base class
|
||||
public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor, ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory {
|
||||
|
||||
public FluidTank water;
|
||||
public FluidTank steam;
|
||||
|
||||
public String getName() {
|
||||
return "container.machineStrandCaster";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryName() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
public TileEntityMachineStrandCaster() {
|
||||
super(7);
|
||||
water = new FluidTank(Fluids.WATER, 64_000);
|
||||
steam = new FluidTank(Fluids.SPENTSTEAM, 64_000);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if (!worldObj.isRemote) {
|
||||
|
||||
if (this.lastType != this.type || this.lastAmount != this.amount) {
|
||||
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
||||
this.lastType = this.type;
|
||||
this.lastAmount = this.amount;
|
||||
}
|
||||
|
||||
if (this.amount >= this.getCapacity()) {
|
||||
//In case of overfill problems, spit out the excess as scrap
|
||||
if (amount > getCapacity()) {
|
||||
ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, amount));
|
||||
EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap);
|
||||
worldObj.spawnEntityInWorld(item);
|
||||
}
|
||||
this.amount = this.getCapacity();
|
||||
|
||||
}
|
||||
|
||||
if (this.amount == 0) {
|
||||
this.type = null;
|
||||
}
|
||||
|
||||
this.updateConnections();
|
||||
|
||||
ItemMold.Mold mold = this.getInstalledMold();
|
||||
|
||||
if (canProcess()) {
|
||||
|
||||
int itemsCasted = Math.min(amount / mold.getCost(), 9);
|
||||
|
||||
for (int j = 0; j < itemsCasted; j++) {
|
||||
this.amount -= mold.getCost();
|
||||
|
||||
ItemStack out = mold.getOutput(type);
|
||||
|
||||
for (int i = 1; i < 7; i++) {
|
||||
if (slots[i] == null) {
|
||||
slots[i] = out.copy();
|
||||
break;
|
||||
}
|
||||
|
||||
if (slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) {
|
||||
slots[i].stackSize += out.stackSize;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
markChanged();
|
||||
|
||||
water.setFill(water.getFill() - getWaterRequired() * itemsCasted);
|
||||
steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted);
|
||||
}
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
water.writeToNBT(data, "w");
|
||||
steam.writeToNBT(data, "s");
|
||||
|
||||
this.networkPack(data, 150);
|
||||
|
||||
}
|
||||
|
||||
public boolean canProcess() {
|
||||
ItemMold.Mold mold = this.getInstalledMold();
|
||||
if (type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) {
|
||||
for (int i = 1; i < 7; i++) {
|
||||
if (slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize())
|
||||
return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public DirPos[] getFluidConPos() {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
return new DirPos[]{
|
||||
new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot),
|
||||
new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()),
|
||||
new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot),
|
||||
new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ + dir.offsetZ * 5, rot.getOpposite()),
|
||||
};
|
||||
}
|
||||
|
||||
public int[][] getMetalPourPos() {
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
return new int[][]{
|
||||
new int[]{xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ},
|
||||
new int[]{xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ},
|
||||
new int[]{xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ},
|
||||
new int[]{xCoord, yCoord + 2, zCoord},
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemMold.Mold getInstalledMold() {
|
||||
if (slots[0] == null) return null;
|
||||
|
||||
if (slots[0].getItem() == ModItems.mold) {
|
||||
return ((ItemMold) slots[0].getItem()).getMold(slots[0]);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMoldSize() {
|
||||
return getInstalledMold().size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
|
||||
if (side != ForgeDirection.UP) return false;
|
||||
for (int[] pos : getMetalPourPos()) {
|
||||
if (pos[0] == x && pos[1] == y && pos[2] == z) {
|
||||
return this.standardCheck(world, x, y, z, side, stack);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) {
|
||||
if (this.type != null && this.type != stack.material) return false;
|
||||
return !(this.amount >= this.getCapacity() || getInstalledMold() == null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
ItemMold.Mold mold = this.getInstalledMold();
|
||||
return mold == null ? 50000 : mold.getCost() * 10;
|
||||
}
|
||||
|
||||
private int getWaterRequired() {
|
||||
return getInstalledMold() != null ? 5 * getInstalledMold().getCost() : 50;
|
||||
}
|
||||
|
||||
private void updateConnections() {
|
||||
for (DirPos pos : getFluidConPos()) {
|
||||
this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
for (DirPos pos : getFluidConPos()) {
|
||||
sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getSendingTanks() {
|
||||
return new FluidTank[]{steam};
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getReceivingTanks() {
|
||||
return new FluidTank[]{water};
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTank[] getAllTanks() {
|
||||
return new FluidTank[]{water, steam};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerMachineStrandCaster(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUIMachineStrandCaster(player.inventory, this);
|
||||
}
|
||||
|
||||
public void networkPack(NBTTagCompound nbt, int range) {
|
||||
if (!worldObj.isRemote)
|
||||
PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
water.readFromNBT(nbt, "w");
|
||||
steam.readFromNBT(nbt, "s");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
water.writeToNBT(nbt, "w");
|
||||
steam.writeToNBT(nbt, "s");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
water.readFromNBT(nbt, "w");
|
||||
steam.readFromNBT(nbt, "s");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int i, ItemStack stack) {
|
||||
|
||||
if (i == 0) {
|
||||
return stack.getItem() == ModItems.mold;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int meta) {
|
||||
return new int[]{1, 2, 3, 4, 5, 6};
|
||||
}
|
||||
|
||||
public void markChanged() {
|
||||
this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||
if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {
|
||||
return false;
|
||||
} else {
|
||||
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canInsertItem(int slot, ItemStack itemStack, int side) {
|
||||
return this.isItemValidForSlot(slot, itemStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int slot, ItemStack itemStack, int side) {
|
||||
return !this.isItemValidForSlot(slot, itemStack);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
|
||||
if (bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(
|
||||
xCoord - 7,
|
||||
yCoord,
|
||||
zCoord - 7,
|
||||
xCoord + 7,
|
||||
yCoord + 3,
|
||||
zCoord + 7
|
||||
);
|
||||
}
|
||||
return bb;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -721,6 +721,7 @@ container.machineSelenium=Radial Performance Engine
|
||||
container.machineShredder=Shredder
|
||||
container.machineSILEX=SILEX
|
||||
container.machineSolidifier=Solidifier
|
||||
container.machineStrandCaster=Strand Caster
|
||||
container.machineTurbine=Steam Turbine
|
||||
container.machineTurbofan=Turbofan
|
||||
container.machineWoodBurner=Wood-Burner
|
||||
@ -5176,6 +5177,7 @@ tile.machine_stirling_creative.desc=Turns heat into energy. Requires external he
|
||||
tile.machine_stirling_steel.name=Heavy Stirling Engine
|
||||
tile.machine_stirling_steel.desc=Turns heat into energy. Requires external heat source.$Uses a much heavier gear to support higher temperatures.$Heat transfer rate: T*0.1 TU/t$Max intake: 1500 TU/t$Efficiency: 50%%
|
||||
tile.machine_storage_drum.name=Nuclear Waste Disposal Drum
|
||||
tile.machine_strand_caster.name=Strand Caster
|
||||
tile.machine_telelinker.name=Turret Telemetry Linker
|
||||
tile.machine_teleporter.name=Teleporter
|
||||
tile.machine_tower_large.name=Cooling Tower
|
||||
|
||||
946
src/main/resources/assets/hbm/models/machines/strand_caster.obj
Normal file
946
src/main/resources/assets/hbm/models/machines/strand_caster.obj
Normal file
@ -0,0 +1,946 @@
|
||||
# Blender 3.6.1
|
||||
# www.blender.org
|
||||
mtllib strand_caster.mtl
|
||||
o caster
|
||||
v -1.000000 0.000000 1.000000
|
||||
v 1.000000 0.000000 1.000000
|
||||
v -1.000000 -0.000000 -6.000000
|
||||
v 1.000000 -0.000000 -6.000000
|
||||
v -1.000000 0.750000 -6.000000
|
||||
v -1.000000 0.750000 1.000000
|
||||
v 1.000000 0.750000 1.000000
|
||||
v 1.000000 0.750000 -6.000000
|
||||
v -1.000000 2.000000 1.000000
|
||||
v 1.000000 2.000000 1.000000
|
||||
v -1.000000 3.000000 1.000000
|
||||
v 1.000000 3.000000 1.000000
|
||||
v -1.000000 2.000000 -1.000000
|
||||
v 1.000000 2.000000 -1.000000
|
||||
v -1.000000 3.000000 -1.000000
|
||||
v 1.000000 3.000000 -1.000000
|
||||
v -0.875000 3.000000 0.875000
|
||||
v 0.875000 3.000000 0.875000
|
||||
v -0.875000 3.000000 -0.875000
|
||||
v 0.875000 3.000000 -0.875000
|
||||
v -0.875000 2.125000 0.875000
|
||||
v 0.875000 2.125000 0.875000
|
||||
v -0.875000 2.125000 -0.875000
|
||||
v 0.875000 2.125000 -0.875000
|
||||
v -0.750000 2.000000 0.750000
|
||||
v 0.750000 2.000000 0.750000
|
||||
v -0.750000 2.000000 -0.750000
|
||||
v 0.750000 2.000000 -0.750000
|
||||
v -0.750000 0.500000 -1.500000
|
||||
v -0.750000 0.500000 0.750000
|
||||
v 0.750000 0.500000 -1.500000
|
||||
v -0.750000 0.750000 -5.750000
|
||||
v -0.750000 0.750000 0.750000
|
||||
v 0.750000 0.750000 0.750000
|
||||
v 0.750000 0.750000 -5.750000
|
||||
v -0.750000 0.500000 -5.750000
|
||||
v 0.750000 0.500000 0.750000
|
||||
v 0.750000 0.500000 -5.750000
|
||||
v 0.750000 1.250000 -1.500000
|
||||
v -0.750000 1.250000 -1.500000
|
||||
v 0.750000 0.812500 -3.125000
|
||||
v -0.750000 0.812500 -3.125000
|
||||
v -0.750000 0.812500 -2.125000
|
||||
v 0.750000 0.812500 -2.125000
|
||||
v -0.750000 0.724112 -2.088388
|
||||
v 0.750000 0.724112 -2.088388
|
||||
v -0.750000 0.687500 -2.000000
|
||||
v 0.750000 0.687500 -2.000000
|
||||
v -0.750000 0.724112 -1.911612
|
||||
v 0.750000 0.724112 -1.911612
|
||||
v -0.750000 0.812500 -1.875000
|
||||
v 0.750000 0.812500 -1.875000
|
||||
v -0.750000 0.900888 -1.911612
|
||||
v 0.750000 0.900888 -1.911612
|
||||
v -0.750000 0.937500 -2.000000
|
||||
v 0.750000 0.937500 -2.000000
|
||||
v -0.750000 0.900888 -2.088388
|
||||
v 0.750000 0.900888 -2.088388
|
||||
v -0.750000 0.724112 -3.088388
|
||||
v 0.750000 0.724112 -3.088388
|
||||
v -0.750000 0.687500 -3.000000
|
||||
v 0.750000 0.687500 -3.000000
|
||||
v -0.750000 0.724112 -2.911612
|
||||
v 0.750000 0.724112 -2.911612
|
||||
v -0.750000 0.812500 -2.875000
|
||||
v 0.750000 0.812500 -2.875000
|
||||
v -0.750000 0.900888 -2.911612
|
||||
v 0.750000 0.900888 -2.911612
|
||||
v -0.750000 0.937500 -3.000000
|
||||
v 0.750000 0.937500 -3.000000
|
||||
v -0.750000 0.900888 -3.088388
|
||||
v 0.750000 0.900888 -3.088388
|
||||
v 0.750000 0.812500 -4.125000
|
||||
v -0.750000 0.812500 -4.125000
|
||||
v -0.750000 0.724112 -4.088388
|
||||
v 0.750000 0.724112 -4.088388
|
||||
v -0.750000 0.687500 -4.000000
|
||||
v 0.750000 0.687500 -4.000000
|
||||
v -0.750000 0.724112 -3.911612
|
||||
v 0.750000 0.724112 -3.911612
|
||||
v -0.750000 0.812500 -3.875000
|
||||
v 0.750000 0.812500 -3.875000
|
||||
v -0.750000 0.900888 -3.911612
|
||||
v 0.750000 0.900888 -3.911612
|
||||
v -0.750000 0.937500 -4.000000
|
||||
v 0.750000 0.937500 -4.000000
|
||||
v -0.750000 0.900888 -4.088388
|
||||
v 0.750000 0.900888 -4.088388
|
||||
v 0.750000 0.812500 -5.125000
|
||||
v -0.750000 0.812500 -5.125000
|
||||
v -0.750000 0.724112 -5.088388
|
||||
v 0.750000 0.724112 -5.088388
|
||||
v -0.750000 0.687500 -5.000000
|
||||
v 0.750000 0.687500 -5.000000
|
||||
v -0.750000 0.724112 -4.911612
|
||||
v 0.750000 0.724112 -4.911612
|
||||
v -0.750000 0.812500 -4.875000
|
||||
v 0.750000 0.812500 -4.875000
|
||||
v -0.750000 0.900888 -4.911612
|
||||
v 0.750000 0.900888 -4.911612
|
||||
v -0.750000 0.937500 -5.000000
|
||||
v 0.750000 0.937500 -5.000000
|
||||
v -0.750000 0.900888 -5.088388
|
||||
v 0.750000 0.900888 -5.088388
|
||||
v 0.750000 1.187500 -3.625000
|
||||
v -0.750000 1.187500 -3.625000
|
||||
v -0.750000 1.187500 -2.625000
|
||||
v 0.750000 1.187500 -2.625000
|
||||
v -0.750000 1.099112 -2.588388
|
||||
v 0.750000 1.099112 -2.588388
|
||||
v -0.750000 1.062500 -2.500000
|
||||
v 0.750000 1.062500 -2.500000
|
||||
v -0.750000 1.099112 -2.411612
|
||||
v 0.750000 1.099112 -2.411612
|
||||
v -0.750000 1.187500 -2.375000
|
||||
v 0.750000 1.187500 -2.375000
|
||||
v -0.750000 1.275888 -2.411612
|
||||
v 0.750000 1.275888 -2.411612
|
||||
v -0.750000 1.312500 -2.500000
|
||||
v 0.750000 1.312500 -2.500000
|
||||
v -0.750000 1.275888 -2.588388
|
||||
v 0.750000 1.275888 -2.588388
|
||||
v -0.750000 1.099112 -3.588388
|
||||
v 0.750000 1.099112 -3.588388
|
||||
v -0.750000 1.062500 -3.500000
|
||||
v 0.750000 1.062500 -3.500000
|
||||
v -0.750000 1.099112 -3.411612
|
||||
v 0.750000 1.099112 -3.411612
|
||||
v -0.750000 1.187500 -3.375000
|
||||
v 0.750000 1.187500 -3.375000
|
||||
v -0.750000 1.275888 -3.411612
|
||||
v 0.750000 1.275888 -3.411612
|
||||
v -0.750000 1.312500 -3.500000
|
||||
v 0.750000 1.312500 -3.500000
|
||||
v -0.750000 1.275888 -3.588388
|
||||
v 0.750000 1.275888 -3.588388
|
||||
v 0.750000 1.187500 -4.625000
|
||||
v -0.750000 1.187500 -4.625000
|
||||
v -0.750000 1.099112 -4.588388
|
||||
v 0.750000 1.099112 -4.588388
|
||||
v -0.750000 1.062500 -4.500000
|
||||
v 0.750000 1.062500 -4.500000
|
||||
v -0.750000 1.099112 -4.411612
|
||||
v 0.750000 1.099112 -4.411612
|
||||
v -0.750000 1.187500 -4.375000
|
||||
v 0.750000 1.187500 -4.375000
|
||||
v -0.750000 1.275888 -4.411612
|
||||
v 0.750000 1.275888 -4.411612
|
||||
v -0.750000 1.312500 -4.500000
|
||||
v 0.750000 1.312500 -4.500000
|
||||
v -0.750000 1.275888 -4.588388
|
||||
v 0.750000 1.275888 -4.588388
|
||||
v 0.750000 0.937500 -2.125000
|
||||
v 0.875000 0.937500 -2.125000
|
||||
v 0.750000 0.937500 -2.375000
|
||||
v 0.875000 0.937500 -2.375000
|
||||
v 0.750000 1.062500 -2.375000
|
||||
v -0.750000 1.312500 -2.125000
|
||||
v -0.875000 1.312500 -2.125000
|
||||
v 0.875000 1.062500 -2.375000
|
||||
v -0.750000 1.062500 -2.375000
|
||||
v 0.750000 1.312500 -2.125000
|
||||
v 0.875000 1.312500 -2.125000
|
||||
v -0.875000 1.062500 -2.375000
|
||||
v 0.875000 1.062500 -4.625000
|
||||
v 0.750000 1.062500 -4.625000
|
||||
v -0.750000 0.937500 -2.375000
|
||||
v -0.875000 0.937500 -2.375000
|
||||
v -0.750000 0.937500 -2.125000
|
||||
v -0.875000 0.937500 -2.125000
|
||||
v 0.875000 1.312500 -4.875000
|
||||
v 0.750000 1.312500 -4.875000
|
||||
v 0.875000 0.937500 -4.625000
|
||||
v 0.750000 0.937500 -4.625000
|
||||
v 0.875000 0.937500 -4.875000
|
||||
v 0.750000 0.937500 -4.875000
|
||||
v -0.750000 1.062500 -4.625000
|
||||
v -0.875000 1.062500 -4.625000
|
||||
v -0.750000 1.312500 -4.875000
|
||||
v -0.875000 1.312500 -4.875000
|
||||
v -0.750000 0.937500 -4.625000
|
||||
v -0.875000 0.937500 -4.625000
|
||||
v -0.750000 0.937500 -4.875000
|
||||
v -0.875000 0.937500 -4.875000
|
||||
v 0.750000 0.937500 -1.625000
|
||||
v 0.875000 0.937500 -1.625000
|
||||
v -0.750000 0.937500 -1.625000
|
||||
v -0.875000 0.937500 -1.625000
|
||||
v 0.750000 0.937500 -5.375000
|
||||
v 0.875000 0.937500 -5.375000
|
||||
v -0.750000 0.937500 -5.375000
|
||||
v -0.875000 0.937500 -5.375000
|
||||
v 0.750000 0.750000 -1.625000
|
||||
v 0.875000 0.750000 -1.625000
|
||||
v -0.875000 0.750000 -1.625000
|
||||
v -0.750000 0.750000 -1.625000
|
||||
v 0.750000 0.750000 -5.375000
|
||||
v 0.875000 0.750000 -5.375000
|
||||
v -0.875000 0.750000 -5.375000
|
||||
v -0.750000 0.750000 -5.375000
|
||||
v 0.250000 1.250000 -1.500000
|
||||
v 0.161612 1.275888 -1.474112
|
||||
v 0.125000 1.338388 -1.411612
|
||||
v 0.161612 1.400888 -1.349112
|
||||
v 0.250000 1.426777 -1.323223
|
||||
v 0.338388 1.400888 -1.349112
|
||||
v 0.375000 1.338388 -1.411612
|
||||
v 0.338388 1.275888 -1.474112
|
||||
v 0.250000 1.426777 -1.573223
|
||||
v 0.161612 1.426777 -1.536612
|
||||
v 0.125000 1.426777 -1.448223
|
||||
v 0.161612 1.426777 -1.359835
|
||||
v 0.338388 1.426777 -1.359835
|
||||
v 0.375000 1.426777 -1.448223
|
||||
v 0.338388 1.426777 -1.536612
|
||||
v 0.250000 1.603553 -1.500000
|
||||
v 0.161612 1.577665 -1.474112
|
||||
v 0.125000 1.515165 -1.411612
|
||||
v 0.161612 1.452665 -1.349112
|
||||
v 0.338388 1.452665 -1.349112
|
||||
v 0.375000 1.515165 -1.411612
|
||||
v 0.338388 1.577665 -1.474112
|
||||
v -0.161612 1.275888 -1.474112
|
||||
v -0.125000 1.338388 -1.411612
|
||||
v -0.161612 1.400888 -1.349112
|
||||
v -0.250000 1.426777 -1.323223
|
||||
v -0.338388 1.400888 -1.349112
|
||||
v -0.375000 1.338388 -1.411612
|
||||
v -0.338388 1.275888 -1.474112
|
||||
v -0.250000 1.250000 -1.500000
|
||||
v 0.161612 2.152189 -0.899587
|
||||
v 0.250000 2.178077 -0.925476
|
||||
v 0.125000 2.089689 -0.837087
|
||||
v 0.161612 2.027189 -0.774587
|
||||
v 0.375000 2.089689 -0.837087
|
||||
v 0.338388 2.027189 -0.774587
|
||||
v 0.338388 2.152189 -0.899587
|
||||
v 0.250000 2.001301 -0.748699
|
||||
v -0.250000 1.426777 -1.573223
|
||||
v -0.338388 1.426777 -1.536612
|
||||
v -0.375000 1.426777 -1.448223
|
||||
v -0.338388 1.426777 -1.359835
|
||||
v -0.161612 1.426777 -1.359835
|
||||
v -0.125000 1.426777 -1.448223
|
||||
v -0.161612 1.426777 -1.536612
|
||||
v -0.250000 1.603553 -1.500000
|
||||
v -0.338388 1.577665 -1.474112
|
||||
v -0.375000 1.515165 -1.411612
|
||||
v -0.338388 1.452665 -1.349112
|
||||
v -0.161612 1.452665 -1.349112
|
||||
v -0.125000 1.515165 -1.411612
|
||||
v -0.161612 1.577665 -1.474112
|
||||
v -0.338388 2.152189 -0.899587
|
||||
v -0.250000 2.178077 -0.925476
|
||||
v -0.375000 2.089689 -0.837087
|
||||
v -0.338388 2.027189 -0.774587
|
||||
v -0.125000 2.089689 -0.837087
|
||||
v -0.161612 2.027189 -0.774587
|
||||
v -0.161612 2.152189 -0.899587
|
||||
v -0.250000 2.001301 -0.748699
|
||||
v 0.750000 0.750000 -0.125000
|
||||
v 0.750000 2.000000 -0.125000
|
||||
v 0.838388 0.750000 -0.088388
|
||||
v 0.838388 2.000000 -0.088388
|
||||
v 0.875000 0.750000 -0.000000
|
||||
v 0.875000 2.000000 -0.000000
|
||||
v 0.838388 0.750000 0.088388
|
||||
v 0.838388 2.000000 0.088388
|
||||
v 0.750000 0.750000 0.125000
|
||||
v 0.750000 2.000000 0.125000
|
||||
v 0.750000 0.750000 0.375000
|
||||
v 0.750000 2.000000 0.375000
|
||||
v 0.838388 0.750000 0.411612
|
||||
v 0.838388 2.000000 0.411612
|
||||
v 0.875000 0.750000 0.500000
|
||||
v 0.875000 2.000000 0.500000
|
||||
v 0.838388 0.750000 0.588388
|
||||
v 0.838388 2.000000 0.588388
|
||||
v 0.750000 0.750000 0.625000
|
||||
v 0.750000 2.000000 0.625000
|
||||
v 0.750000 0.750000 -0.625000
|
||||
v 0.750000 2.000000 -0.625000
|
||||
v 0.838388 0.750000 -0.588388
|
||||
v 0.838388 2.000000 -0.588388
|
||||
v 0.875000 0.750000 -0.500000
|
||||
v 0.875000 2.000000 -0.500000
|
||||
v 0.838388 0.750000 -0.411612
|
||||
v 0.838388 2.000000 -0.411612
|
||||
v 0.750000 0.750000 -0.375000
|
||||
v 0.750000 2.000000 -0.375000
|
||||
v -0.750000 0.750000 -0.125000
|
||||
v -0.750000 2.000000 -0.125000
|
||||
v -0.750000 0.750000 0.125000
|
||||
v -0.750000 2.000000 0.125000
|
||||
v -0.838388 0.750000 0.088388
|
||||
v -0.838388 2.000000 0.088388
|
||||
v -0.875000 0.750000 -0.000000
|
||||
v -0.875000 2.000000 -0.000000
|
||||
v -0.838388 0.750000 -0.088388
|
||||
v -0.838388 2.000000 -0.088388
|
||||
v -0.750000 0.750000 0.375000
|
||||
v -0.750000 2.000000 0.375000
|
||||
v -0.750000 0.750000 0.625000
|
||||
v -0.750000 2.000000 0.625000
|
||||
v -0.838388 0.750000 0.588388
|
||||
v -0.838388 2.000000 0.588388
|
||||
v -0.875000 0.750000 0.500000
|
||||
v -0.875000 2.000000 0.500000
|
||||
v -0.838388 0.750000 0.411612
|
||||
v -0.838388 2.000000 0.411612
|
||||
v -0.750000 0.750000 -0.625000
|
||||
v -0.750000 2.000000 -0.625000
|
||||
v -0.750000 0.750000 -0.375000
|
||||
v -0.750000 2.000000 -0.375000
|
||||
v -0.838388 0.750000 -0.411612
|
||||
v -0.838388 2.000000 -0.411612
|
||||
v -0.875000 0.750000 -0.500000
|
||||
v -0.875000 2.000000 -0.500000
|
||||
v -0.838388 0.750000 -0.588388
|
||||
v -0.838388 2.000000 -0.588388
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vn -0.0000 1.0000 -0.0000
|
||||
vn -0.0000 -0.0000 -1.0000
|
||||
vn -0.0000 -0.0000 1.0000
|
||||
vn 1.0000 -0.0000 -0.0000
|
||||
vn -1.0000 -0.0000 -0.0000
|
||||
vn -0.0000 0.7071 -0.7071
|
||||
vn -0.0000 -0.7071 0.7071
|
||||
vn -0.0000 -0.7071 -0.7071
|
||||
vn -0.0000 0.7071 0.7071
|
||||
vn -0.7311 0.2611 0.6303
|
||||
vn -0.9955 -0.0000 -0.0949
|
||||
vn -0.9947 -0.0393 -0.0948
|
||||
vn -0.6333 -0.2962 -0.7150
|
||||
vn -0.0000 -0.3827 -0.9239
|
||||
vn 0.6333 -0.2962 -0.7150
|
||||
vn 0.9955 -0.0000 -0.0949
|
||||
vn 0.7311 0.2611 0.6303
|
||||
vn 0.9947 -0.0393 -0.0948
|
||||
vn -0.6630 -0.0000 -0.7486
|
||||
vn 0.6630 -0.0000 -0.7486
|
||||
vn 0.6794 0.4063 -0.6110
|
||||
vn 0.9987 0.0196 -0.0473
|
||||
vn 0.7574 -0.0000 0.6530
|
||||
vn -0.9987 0.0196 -0.0473
|
||||
vn -0.7263 -0.3800 0.5728
|
||||
vn -0.7574 -0.0000 0.6530
|
||||
vn -0.6794 0.4063 -0.6110
|
||||
vn -0.0000 -0.5562 0.8311
|
||||
vn 0.7263 -0.3800 0.5728
|
||||
vn 0.7071 -0.5000 0.5000
|
||||
vn -0.7071 -0.5000 0.5000
|
||||
vn -0.0000 0.5628 -0.8266
|
||||
vn -0.7071 0.5000 -0.5000
|
||||
vn 0.3827 -0.0000 -0.9239
|
||||
vn 0.7071 -0.0000 -0.7071
|
||||
vn 0.7071 -0.0000 0.7071
|
||||
vn 0.3827 -0.0000 0.9239
|
||||
vn -0.3827 -0.0000 0.9239
|
||||
vn -0.7071 -0.0000 0.7071
|
||||
vn -0.7071 -0.0000 -0.7071
|
||||
vn -0.3827 -0.0000 -0.9239
|
||||
vn 0.7071 0.5000 -0.5000
|
||||
vt 0.484375 0.100000
|
||||
vt 0.046875 0.366667
|
||||
vt 0.046875 0.100000
|
||||
vt 0.484375 0.733333
|
||||
vt 0.468750 0.500000
|
||||
vt 0.484375 0.466667
|
||||
vt 0.531250 0.366667
|
||||
vt 0.484375 0.366667
|
||||
vt -0.000000 0.100000
|
||||
vt 0.046875 0.466667
|
||||
vt 0.484375 -0.000000
|
||||
vt 0.656250 0.600000
|
||||
vt 0.531250 0.466667
|
||||
vt 0.656250 0.466667
|
||||
vt 0.531250 0.600000
|
||||
vt 0.531250 0.200000
|
||||
vt 0.539062 0.616667
|
||||
vt 0.648438 0.616667
|
||||
vt 0.539062 0.733333
|
||||
vt 0.648438 0.966667
|
||||
vt 0.539062 0.966667
|
||||
vt 0.468750 0.733333
|
||||
vt 0.062500 0.766667
|
||||
vt 0.062500 0.733333
|
||||
vt 0.062500 0.700000
|
||||
vt 0.046875 0.733333
|
||||
vt 0.531250 -0.000000
|
||||
vt 0.671875 -0.000000
|
||||
vt 0.671875 0.100000
|
||||
vt 0.812500 0.200000
|
||||
vt 0.765625 -0.000000
|
||||
vt 0.906250 -0.000000
|
||||
vt 0.765625 0.100000
|
||||
vt 0.906250 0.200000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 0.200000
|
||||
vt 0.058594 0.500000
|
||||
vt 0.468750 0.700000
|
||||
vt 0.468750 0.966667
|
||||
vt 0.062500 0.966667
|
||||
vt 0.062500 1.000000
|
||||
vt 0.468750 1.000000
|
||||
vt 0.484375 0.966667
|
||||
vt 0.468750 0.766667
|
||||
vt 0.484375 0.766667
|
||||
vt 0.046875 0.766667
|
||||
vt 0.046875 0.966667
|
||||
vt 0.671875 0.200000
|
||||
vt 0.765625 0.200000
|
||||
vt 0.695312 0.550000
|
||||
vt 0.679688 0.566667
|
||||
vt 0.679688 0.516667
|
||||
vt 0.875000 0.500000
|
||||
vt 0.851562 0.516667
|
||||
vt 0.851562 0.500000
|
||||
vt 0.687500 0.433333
|
||||
vt 0.695312 0.450000
|
||||
vt 0.687500 0.450000
|
||||
vt 0.695312 0.466667
|
||||
vt 0.679688 0.450000
|
||||
vt 0.835938 0.550000
|
||||
vt 0.851562 0.566667
|
||||
vt 0.835938 0.566667
|
||||
vt 0.679688 0.500000
|
||||
vt 0.656250 0.516667
|
||||
vt 0.656250 0.500000
|
||||
vt 0.695312 0.433333
|
||||
vt 0.835938 0.450000
|
||||
vt 0.835938 0.433333
|
||||
vt 0.843750 0.450000
|
||||
vt 0.835938 0.466667
|
||||
vt 0.851562 0.450000
|
||||
vt 0.902344 0.391667
|
||||
vt 0.667969 0.408333
|
||||
vt 0.667969 0.391667
|
||||
vt 0.902344 0.366667
|
||||
vt 0.914062 0.408333
|
||||
vt 0.902344 0.408333
|
||||
vt 0.656250 0.391667
|
||||
vt 0.667969 0.433333
|
||||
vt 0.531250 0.100000
|
||||
vt 0.000000 0.366667
|
||||
vt 0.046875 -0.000000
|
||||
vt 0.656250 0.200000
|
||||
vt 0.648438 0.733333
|
||||
vt 0.621094 0.200000
|
||||
vt 0.695312 0.566667
|
||||
vt 0.875000 0.516667
|
||||
vt 0.843750 0.433333
|
||||
vt 0.667969 0.366667
|
||||
vt 0.914062 0.391667
|
||||
vt 0.656250 0.408333
|
||||
vt 0.902344 0.433333
|
||||
vt 0.921875 0.200000
|
||||
vt 0.929688 0.400000
|
||||
vt 0.921875 0.400000
|
||||
vt 0.960938 0.200000
|
||||
vt 0.968750 0.400000
|
||||
vt 0.960938 0.400000
|
||||
vt 0.937500 0.200000
|
||||
vt 0.945312 0.400000
|
||||
vt 0.937500 0.400000
|
||||
vt 0.968750 0.200000
|
||||
vt 0.976562 0.400000
|
||||
vt 0.929688 0.200000
|
||||
vt 0.914062 0.200000
|
||||
vt 0.914062 0.400000
|
||||
vt 0.953125 0.200000
|
||||
vt 0.953125 0.400000
|
||||
vt 0.945312 0.200000
|
||||
vt 0.695312 0.341667
|
||||
vt 0.703125 0.333333
|
||||
vt 0.703125 0.350000
|
||||
vt 0.710938 0.358333
|
||||
vt 0.718750 0.333333
|
||||
vt 0.718750 0.358333
|
||||
vt 0.726562 0.358333
|
||||
vt 0.734375 0.333333
|
||||
vt 0.742188 0.341667
|
||||
vt 0.734375 0.350000
|
||||
vt 0.710938 0.333333
|
||||
vt 0.726562 0.333333
|
||||
vt 0.726562 0.308333
|
||||
vt 0.734375 0.316667
|
||||
vt 0.742188 0.333333
|
||||
vt 0.703125 0.316667
|
||||
vt 0.695312 0.325000
|
||||
vt 0.695312 0.333333
|
||||
vt 0.710938 0.308333
|
||||
vt 0.687500 0.333333
|
||||
vt 0.750000 0.333333
|
||||
vt 0.742188 0.325000
|
||||
vt 0.742188 0.200000
|
||||
vt 0.750000 0.308333
|
||||
vt 0.742188 0.308333
|
||||
vt 0.734375 0.200000
|
||||
vt 0.734375 0.308333
|
||||
vt 0.695312 0.200000
|
||||
vt 0.703125 0.308333
|
||||
vt 0.695312 0.308333
|
||||
vt 0.718750 0.200000
|
||||
vt 0.718750 0.308333
|
||||
vt 0.703125 0.200000
|
||||
vt 0.687500 0.200000
|
||||
vt 0.687500 0.308333
|
||||
vt 0.710938 0.200000
|
||||
vt 0.687500 0.366667
|
||||
vt 0.679688 0.200000
|
||||
vt 0.679688 0.366667
|
||||
vt 0.671875 0.366667
|
||||
vt 0.664062 0.200000
|
||||
vt 0.664062 0.366667
|
||||
vt 0.976562 0.200000
|
||||
vt 0.750000 0.200000
|
||||
vt 0.726562 0.200000
|
||||
vt 0.656250 0.366667
|
||||
s 0
|
||||
usemtl
|
||||
f 3/1/1 2/2/1 1/3/1
|
||||
f 5/4/2 35/5/2 8/6/2
|
||||
f 3/1/3 8/7/3 4/8/3
|
||||
f 2/2/4 6/9/4 1/3/4
|
||||
f 4/8/5 7/10/5 2/2/5
|
||||
f 1/3/6 5/11/6 3/1/6
|
||||
f 12/12/4 9/13/4 10/14/4
|
||||
f 13/14/3 16/15/3 14/13/3
|
||||
f 10/13/5 16/12/5 12/15/5
|
||||
f 9/16/1 14/14/1 10/13/1
|
||||
f 11/12/6 13/13/6 9/14/6
|
||||
f 11/12/2 19/17/2 15/15/2
|
||||
f 17/18/5 23/19/5 19/17/5
|
||||
f 16/12/2 18/17/2 12/15/2
|
||||
f 15/12/2 20/17/2 16/15/2
|
||||
f 12/12/2 17/17/2 11/15/2
|
||||
f 22/19/2 23/20/2 21/21/2
|
||||
f 19/18/4 24/19/4 20/17/4
|
||||
f 20/18/6 22/19/6 18/17/6
|
||||
f 18/18/3 21/19/3 17/17/3
|
||||
f 35/22/6 37/23/6 34/24/6
|
||||
f 7/10/2 33/25/2 6/26/2
|
||||
f 37/27/5 31/28/5 39/29/5
|
||||
f 27/30/6 29/31/6 30/32/6
|
||||
f 39/29/3 29/31/3 40/33/3
|
||||
f 25/34/4 37/35/4 26/36/4
|
||||
f 8/6/2 34/37/2 7/10/2
|
||||
f 6/26/2 32/38/2 5/4/2
|
||||
f 37/23/2 36/39/2 30/40/2
|
||||
f 33/41/5 36/39/5 32/42/5
|
||||
f 32/43/4 38/44/4 35/45/4
|
||||
f 34/46/3 30/40/3 33/47/3
|
||||
f 28/48/7 40/33/7 27/49/7
|
||||
f 157/50/6 153/51/6 162/52/6
|
||||
f 183/53/3 180/54/3 179/55/3
|
||||
f 155/56/3 160/57/3 156/58/3
|
||||
f 160/59/5 154/60/5 156/57/5
|
||||
f 178/61/6 184/62/6 182/63/6
|
||||
f 163/64/4 153/65/4 154/66/4
|
||||
f 164/67/1 177/68/1 161/57/1
|
||||
f 178/69/4 181/70/4 177/68/4
|
||||
f 161/59/5 179/55/5 158/64/5
|
||||
f 171/55/2 162/52/2 163/64/2
|
||||
f 161/59/5 169/60/5 167/57/5
|
||||
f 177/71/5 183/72/5 179/55/5
|
||||
f 157/67/1 165/68/1 160/57/1
|
||||
f 179/55/2 159/52/2 158/64/2
|
||||
f 166/61/6 176/62/6 174/63/6
|
||||
f 160/59/5 171/55/5 163/64/5
|
||||
f 162/52/6 166/61/6 157/50/6
|
||||
f 158/64/4 170/65/4 169/66/4
|
||||
f 159/52/6 178/61/6 164/50/6
|
||||
f 164/50/6 170/51/6 159/52/6
|
||||
f 165/71/5 175/72/5 171/55/5
|
||||
f 166/69/4 173/70/4 165/68/4
|
||||
f 168/56/3 161/57/3 167/58/3
|
||||
f 175/53/3 172/54/3 171/55/3
|
||||
f 191/73/2 188/74/2 187/75/2
|
||||
f 190/73/2 185/74/2 186/75/2
|
||||
f 187/75/5 200/76/5 191/73/5
|
||||
f 190/73/3 197/77/3 189/78/3
|
||||
f 185/74/4 194/79/4 186/75/4
|
||||
f 189/78/6 193/80/6 185/74/6
|
||||
f 192/78/6 195/80/6 188/74/6
|
||||
f 191/73/3 199/77/3 192/78/3
|
||||
f 188/74/4 196/79/4 187/75/4
|
||||
f 186/75/5 198/76/5 190/73/5
|
||||
f 3/1/1 4/8/1 2/2/1
|
||||
f 5/4/2 32/38/2 35/5/2
|
||||
f 3/1/3 5/81/3 8/7/3
|
||||
f 2/2/4 7/82/4 6/9/4
|
||||
f 4/8/5 8/6/5 7/10/5
|
||||
f 1/3/6 6/83/6 5/11/6
|
||||
f 12/12/4 11/15/4 9/13/4
|
||||
f 13/14/3 15/12/3 16/15/3
|
||||
f 10/13/5 14/14/5 16/12/5
|
||||
f 9/16/1 13/84/1 14/14/1
|
||||
f 11/12/6 15/15/6 13/13/6
|
||||
f 11/12/2 17/18/2 19/17/2
|
||||
f 17/18/5 21/85/5 23/19/5
|
||||
f 16/12/2 20/18/2 18/17/2
|
||||
f 15/12/2 19/18/2 20/17/2
|
||||
f 12/12/2 18/18/2 17/17/2
|
||||
f 22/19/2 24/85/2 23/20/2
|
||||
f 19/18/4 23/85/4 24/19/4
|
||||
f 20/18/6 24/85/6 22/19/6
|
||||
f 18/18/3 22/85/3 21/19/3
|
||||
f 35/22/6 38/44/6 37/23/6
|
||||
f 7/10/2 34/37/2 33/25/2
|
||||
f 39/29/5 28/86/5 37/27/5
|
||||
f 28/86/5 26/16/5 37/27/5
|
||||
f 30/32/6 25/34/6 27/30/6
|
||||
f 27/30/6 40/33/6 29/31/6
|
||||
f 39/29/3 31/28/3 29/31/3
|
||||
f 25/34/4 30/32/4 37/35/4
|
||||
f 8/6/2 35/5/2 34/37/2
|
||||
f 6/26/2 33/25/2 32/38/2
|
||||
f 37/23/2 38/44/2 36/39/2
|
||||
f 33/41/5 30/40/5 36/39/5
|
||||
f 32/43/4 36/39/4 38/44/4
|
||||
f 34/46/3 37/23/3 30/40/3
|
||||
f 28/48/7 39/29/7 40/33/7
|
||||
f 157/50/6 155/87/6 153/51/6
|
||||
f 183/53/3 184/88/3 180/54/3
|
||||
f 155/56/3 157/67/3 160/57/3
|
||||
f 160/59/5 163/64/5 154/60/5
|
||||
f 178/61/6 180/54/6 184/62/6
|
||||
f 163/64/4 162/52/4 153/65/4
|
||||
f 164/67/1 178/69/1 177/68/1
|
||||
f 178/69/4 182/89/4 181/70/4
|
||||
f 161/59/5 177/71/5 179/55/5
|
||||
f 171/55/2 172/54/2 162/52/2
|
||||
f 161/59/5 158/64/5 169/60/5
|
||||
f 177/71/5 181/68/5 183/72/5
|
||||
f 157/67/1 166/69/1 165/68/1
|
||||
f 179/55/2 180/54/2 159/52/2
|
||||
f 166/61/6 172/54/6 176/62/6
|
||||
f 160/59/5 165/71/5 171/55/5
|
||||
f 162/52/6 172/54/6 166/61/6
|
||||
f 158/64/4 159/52/4 170/65/4
|
||||
f 159/52/6 180/54/6 178/61/6
|
||||
f 164/50/6 168/87/6 170/51/6
|
||||
f 165/71/5 173/68/5 175/72/5
|
||||
f 166/69/4 174/89/4 173/70/4
|
||||
f 168/56/3 164/67/3 161/57/3
|
||||
f 175/53/3 176/88/3 172/54/3
|
||||
f 191/73/2 192/78/2 188/74/2
|
||||
f 190/73/2 189/78/2 185/74/2
|
||||
f 187/75/5 196/90/5 200/76/5
|
||||
f 190/73/3 198/91/3 197/77/3
|
||||
f 185/74/4 193/92/4 194/79/4
|
||||
f 189/78/6 197/93/6 193/80/6
|
||||
f 192/78/6 199/93/6 195/80/6
|
||||
f 191/73/3 200/91/3 199/77/3
|
||||
f 188/74/4 195/92/4 196/79/4
|
||||
f 186/75/5 194/90/5 198/76/5
|
||||
s 1
|
||||
f 80/94/8 81/95/4 79/96/8
|
||||
f 44/97/3 45/98/9 43/99/3
|
||||
f 68/100/10 69/101/2 67/102/10
|
||||
f 46/103/9 47/104/1 45/98/9
|
||||
f 84/100/10 85/101/2 83/102/10
|
||||
f 66/105/4 67/102/10 65/95/4
|
||||
f 48/106/1 49/96/8 47/107/1
|
||||
f 64/94/8 65/95/4 63/96/8
|
||||
f 50/94/8 51/95/4 49/96/8
|
||||
f 62/106/1 63/96/8 61/107/1
|
||||
f 52/105/4 53/102/10 51/95/4
|
||||
f 72/108/7 42/99/3 71/109/7
|
||||
f 60/103/9 61/104/1 59/98/9
|
||||
f 54/100/10 55/101/2 53/102/10
|
||||
f 41/97/3 59/98/9 42/99/3
|
||||
f 56/110/2 57/109/7 55/101/2
|
||||
f 82/105/4 83/102/10 81/95/4
|
||||
f 70/110/2 71/109/7 69/101/2
|
||||
f 58/108/7 43/99/3 57/109/7
|
||||
f 78/106/1 79/96/8 77/107/1
|
||||
f 88/108/7 74/99/3 87/109/7
|
||||
f 76/103/9 77/104/1 75/98/9
|
||||
f 73/97/3 75/98/9 74/99/3
|
||||
f 86/110/2 87/109/7 85/101/2
|
||||
f 96/94/8 97/95/4 95/96/8
|
||||
f 100/100/10 101/101/2 99/102/10
|
||||
f 98/105/4 99/102/10 97/95/4
|
||||
f 94/106/1 95/96/8 93/107/1
|
||||
f 104/108/7 90/99/3 103/109/7
|
||||
f 92/103/9 93/104/1 91/98/9
|
||||
f 89/97/3 91/98/9 90/99/3
|
||||
f 102/110/2 103/109/7 101/101/2
|
||||
f 144/94/8 145/95/4 143/96/8
|
||||
f 108/97/3 109/98/9 107/99/3
|
||||
f 132/100/10 133/101/2 131/102/10
|
||||
f 110/103/9 111/104/1 109/98/9
|
||||
f 148/100/10 149/101/2 147/102/10
|
||||
f 130/105/4 131/102/10 129/95/4
|
||||
f 112/106/1 113/96/8 111/107/1
|
||||
f 128/94/8 129/95/4 127/96/8
|
||||
f 114/94/8 115/95/4 113/96/8
|
||||
f 126/106/1 127/96/8 125/107/1
|
||||
f 116/105/4 117/102/10 115/95/4
|
||||
f 136/108/7 106/99/3 135/109/7
|
||||
f 124/103/9 125/104/1 123/98/9
|
||||
f 118/100/10 119/101/2 117/102/10
|
||||
f 105/97/3 123/98/9 106/99/3
|
||||
f 120/110/2 121/109/7 119/101/2
|
||||
f 146/105/4 147/102/10 145/95/4
|
||||
f 134/110/2 135/109/7 133/101/2
|
||||
f 122/108/7 107/99/3 121/109/7
|
||||
f 142/106/1 143/96/8 141/107/1
|
||||
f 152/108/7 138/99/3 151/109/7
|
||||
f 140/103/9 141/104/1 139/98/9
|
||||
f 137/97/3 139/98/9 138/99/3
|
||||
f 150/110/2 151/109/7 149/101/2
|
||||
f 204/111/11 211/112/12 203/113/13
|
||||
f 202/114/14 209/115/3 201/116/15
|
||||
f 209/115/3 208/117/16 201/116/15
|
||||
f 214/118/17 206/119/18 207/120/19
|
||||
f 203/113/13 210/121/20 202/114/14
|
||||
f 215/122/21 207/120/19 208/117/16
|
||||
f 209/115/3 222/123/22 215/122/21
|
||||
f 221/124/23 213/125/24 214/118/17
|
||||
f 218/126/25 210/121/20 211/112/12
|
||||
f 215/122/21 221/124/23 214/118/17
|
||||
f 219/127/26 211/112/12 212/128/27
|
||||
f 217/129/28 209/115/3 210/121/20
|
||||
f 204/111/11 205/130/29 212/128/27
|
||||
f 212/128/27 205/130/29 219/127/26
|
||||
f 205/131/29 206/119/18 213/125/24
|
||||
f 213/125/24 220/132/30 205/131/29
|
||||
f 236/133/31 205/134/29 220/135/30
|
||||
f 230/116/15 245/122/21 223/117/16
|
||||
f 222/123/22 235/136/5 221/137/23
|
||||
f 234/138/32 218/139/25 219/140/26
|
||||
f 232/141/7 222/123/22 216/142/33
|
||||
f 235/136/5 220/135/30 221/137/23
|
||||
f 233/143/6 217/129/28 218/139/25
|
||||
f 227/111/11 241/112/12 228/113/13
|
||||
f 238/144/8 219/140/26 205/145/29
|
||||
f 228/113/13 240/121/20 229/114/14
|
||||
f 239/115/3 252/123/22 245/122/21
|
||||
f 248/126/25 240/121/20 241/112/12
|
||||
f 240/121/20 230/116/15 229/114/14
|
||||
f 244/118/17 225/119/18 224/120/19
|
||||
f 245/122/21 224/120/19 223/117/16
|
||||
f 251/124/23 243/125/24 244/118/17
|
||||
f 231/146/34 216/142/33 217/129/28
|
||||
f 245/122/21 251/124/23 244/118/17
|
||||
f 242/128/27 248/126/25 241/112/12
|
||||
f 247/129/28 239/115/3 240/121/20
|
||||
f 227/111/11 226/130/29 242/128/27
|
||||
f 242/128/27 226/130/29 249/127/26
|
||||
f 226/131/29 225/119/18 243/125/24
|
||||
f 243/125/24 250/132/30 226/131/29
|
||||
f 258/133/31 226/134/29 250/135/30
|
||||
f 252/123/22 257/136/5 251/137/23
|
||||
f 256/138/32 248/139/25 249/140/26
|
||||
f 254/141/7 252/123/22 246/142/33
|
||||
f 257/136/5 250/135/30 251/137/23
|
||||
f 255/143/6 247/129/28 248/139/25
|
||||
f 260/144/8 249/140/26 226/145/29
|
||||
f 253/146/34 246/142/33 247/129/28
|
||||
f 262/147/35 263/148/36 261/144/35
|
||||
f 264/149/36 265/48/5 263/148/36
|
||||
f 266/150/5 267/151/37 265/48/5
|
||||
f 268/152/37 269/84/38 267/151/37
|
||||
f 274/149/36 275/48/5 273/148/36
|
||||
f 272/147/35 273/148/36 271/144/35
|
||||
f 276/150/5 277/151/37 275/48/5
|
||||
f 278/152/37 279/84/38 277/151/37
|
||||
f 284/149/36 285/48/5 283/148/36
|
||||
f 282/147/35 283/148/36 281/144/35
|
||||
f 286/150/5 287/151/37 285/48/5
|
||||
f 288/152/37 289/84/38 287/151/37
|
||||
f 294/147/39 295/148/40 293/144/39
|
||||
f 296/149/40 297/48/6 295/148/40
|
||||
f 298/150/6 299/151/41 297/48/6
|
||||
f 300/152/41 291/84/42 299/151/41
|
||||
f 304/147/39 305/148/40 303/144/39
|
||||
f 306/149/40 307/48/6 305/148/40
|
||||
f 308/150/6 309/151/41 307/48/6
|
||||
f 310/152/41 301/84/42 309/151/41
|
||||
f 314/147/39 315/148/40 313/144/39
|
||||
f 316/149/40 317/48/6 315/148/40
|
||||
f 318/150/6 319/151/41 317/48/6
|
||||
f 320/152/41 311/84/42 319/151/41
|
||||
f 80/94/8 82/105/4 81/95/4
|
||||
f 44/97/3 46/103/9 45/98/9
|
||||
f 68/100/10 70/110/2 69/101/2
|
||||
f 46/103/9 48/153/1 47/104/1
|
||||
f 84/100/10 86/110/2 85/101/2
|
||||
f 66/105/4 68/100/10 67/102/10
|
||||
f 48/106/1 50/94/8 49/96/8
|
||||
f 64/94/8 66/105/4 65/95/4
|
||||
f 50/94/8 52/105/4 51/95/4
|
||||
f 62/106/1 64/94/8 63/96/8
|
||||
f 52/105/4 54/100/10 53/102/10
|
||||
f 72/108/7 41/97/3 42/99/3
|
||||
f 60/103/9 62/153/1 61/104/1
|
||||
f 54/100/10 56/110/2 55/101/2
|
||||
f 41/97/3 60/103/9 59/98/9
|
||||
f 56/110/2 58/108/7 57/109/7
|
||||
f 82/105/4 84/100/10 83/102/10
|
||||
f 70/110/2 72/108/7 71/109/7
|
||||
f 58/108/7 44/97/3 43/99/3
|
||||
f 78/106/1 80/94/8 79/96/8
|
||||
f 88/108/7 73/97/3 74/99/3
|
||||
f 76/103/9 78/153/1 77/104/1
|
||||
f 73/97/3 76/103/9 75/98/9
|
||||
f 86/110/2 88/108/7 87/109/7
|
||||
f 96/94/8 98/105/4 97/95/4
|
||||
f 100/100/10 102/110/2 101/101/2
|
||||
f 98/105/4 100/100/10 99/102/10
|
||||
f 94/106/1 96/94/8 95/96/8
|
||||
f 104/108/7 89/97/3 90/99/3
|
||||
f 92/103/9 94/153/1 93/104/1
|
||||
f 89/97/3 92/103/9 91/98/9
|
||||
f 102/110/2 104/108/7 103/109/7
|
||||
f 144/94/8 146/105/4 145/95/4
|
||||
f 108/97/3 110/103/9 109/98/9
|
||||
f 132/100/10 134/110/2 133/101/2
|
||||
f 110/103/9 112/153/1 111/104/1
|
||||
f 148/100/10 150/110/2 149/101/2
|
||||
f 130/105/4 132/100/10 131/102/10
|
||||
f 112/106/1 114/94/8 113/96/8
|
||||
f 128/94/8 130/105/4 129/95/4
|
||||
f 114/94/8 116/105/4 115/95/4
|
||||
f 126/106/1 128/94/8 127/96/8
|
||||
f 116/105/4 118/100/10 117/102/10
|
||||
f 136/108/7 105/97/3 106/99/3
|
||||
f 124/103/9 126/153/1 125/104/1
|
||||
f 118/100/10 120/110/2 119/101/2
|
||||
f 105/97/3 124/103/9 123/98/9
|
||||
f 120/110/2 122/108/7 121/109/7
|
||||
f 146/105/4 148/100/10 147/102/10
|
||||
f 134/110/2 136/108/7 135/109/7
|
||||
f 122/108/7 108/97/3 107/99/3
|
||||
f 142/106/1 144/94/8 143/96/8
|
||||
f 152/108/7 137/97/3 138/99/3
|
||||
f 140/103/9 142/153/1 141/104/1
|
||||
f 137/97/3 140/103/9 139/98/9
|
||||
f 150/110/2 152/108/7 151/109/7
|
||||
f 204/111/11 212/128/27 211/112/12
|
||||
f 202/114/14 210/121/20 209/115/3
|
||||
f 209/115/3 215/122/21 208/117/16
|
||||
f 214/118/17 213/125/24 206/119/18
|
||||
f 203/113/13 211/112/12 210/121/20
|
||||
f 215/122/21 214/118/17 207/120/19
|
||||
f 209/115/3 216/142/33 222/123/22
|
||||
f 221/124/23 220/132/30 213/125/24
|
||||
f 218/126/25 217/129/28 210/121/20
|
||||
f 215/122/21 222/123/22 221/124/23
|
||||
f 219/127/26 218/126/25 211/112/12
|
||||
f 217/129/28 216/142/33 209/115/3
|
||||
f 236/133/31 238/154/8 205/134/29
|
||||
f 230/116/15 239/115/3 245/122/21
|
||||
f 222/123/22 237/155/43 235/136/5
|
||||
f 234/138/32 233/143/6 218/139/25
|
||||
f 232/141/7 237/155/43 222/123/22
|
||||
f 235/136/5 236/133/31 220/135/30
|
||||
f 233/143/6 231/146/34 217/129/28
|
||||
f 227/111/11 242/128/27 241/112/12
|
||||
f 238/144/8 234/138/32 219/140/26
|
||||
f 228/113/13 241/112/12 240/121/20
|
||||
f 239/115/3 246/142/33 252/123/22
|
||||
f 248/126/25 247/129/28 240/121/20
|
||||
f 240/121/20 239/115/3 230/116/15
|
||||
f 244/118/17 243/125/24 225/119/18
|
||||
f 245/122/21 244/118/17 224/120/19
|
||||
f 251/124/23 250/132/30 243/125/24
|
||||
f 231/146/34 232/141/7 216/142/33
|
||||
f 245/122/21 252/123/22 251/124/23
|
||||
f 242/128/27 249/127/26 248/126/25
|
||||
f 247/129/28 246/142/33 239/115/3
|
||||
f 258/133/31 260/154/8 226/134/29
|
||||
f 252/123/22 259/155/43 257/136/5
|
||||
f 256/138/32 255/143/6 248/139/25
|
||||
f 254/141/7 259/155/43 252/123/22
|
||||
f 257/136/5 258/133/31 250/135/30
|
||||
f 255/143/6 253/146/34 247/129/28
|
||||
f 260/144/8 256/138/32 249/140/26
|
||||
f 253/146/34 254/141/7 246/142/33
|
||||
f 262/147/35 264/149/36 263/148/36
|
||||
f 264/149/36 266/150/5 265/48/5
|
||||
f 266/150/5 268/152/37 267/151/37
|
||||
f 268/152/37 270/156/38 269/84/38
|
||||
f 274/149/36 276/150/5 275/48/5
|
||||
f 272/147/35 274/149/36 273/148/36
|
||||
f 276/150/5 278/152/37 277/151/37
|
||||
f 278/152/37 280/156/38 279/84/38
|
||||
f 284/149/36 286/150/5 285/48/5
|
||||
f 282/147/35 284/149/36 283/148/36
|
||||
f 286/150/5 288/152/37 287/151/37
|
||||
f 288/152/37 290/156/38 289/84/38
|
||||
f 294/147/39 296/149/40 295/148/40
|
||||
f 296/149/40 298/150/6 297/48/6
|
||||
f 298/150/6 300/152/41 299/151/41
|
||||
f 300/152/41 292/156/42 291/84/42
|
||||
f 304/147/39 306/149/40 305/148/40
|
||||
f 306/149/40 308/150/6 307/48/6
|
||||
f 308/150/6 310/152/41 309/151/41
|
||||
f 310/152/41 302/156/42 301/84/42
|
||||
f 314/147/39 316/149/40 315/148/40
|
||||
f 316/149/40 318/150/6 317/48/6
|
||||
f 318/150/6 320/152/41 319/151/41
|
||||
f 320/152/41 312/156/42 311/84/42
|
||||
o plate
|
||||
v -0.500000 0.937500 -1.500000
|
||||
v 0.500000 0.937500 -1.500000
|
||||
v -0.500000 0.937500 -5.250000
|
||||
v 0.500000 0.937500 -5.250000
|
||||
v -0.500000 1.062500 -5.250000
|
||||
v -0.500000 1.062500 -1.500000
|
||||
v 0.500000 1.062500 -1.500000
|
||||
v 0.500000 1.062500 -5.250000
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vn -0.0000 1.0000 -0.0000
|
||||
vn -0.0000 -0.0000 -1.0000
|
||||
vn 1.0000 -0.0000 -0.0000
|
||||
vn -1.0000 -0.0000 -0.0000
|
||||
vt 0.890625 0.566667
|
||||
vt 0.656250 0.700000
|
||||
vt 0.656250 0.566667
|
||||
vt 0.890625 0.700000
|
||||
vt 0.664062 0.700000
|
||||
vt 0.664062 0.566667
|
||||
vt 0.890625 0.683333
|
||||
vt 0.656250 0.683333
|
||||
vt 0.656250 0.583333
|
||||
vt 0.890625 0.583333
|
||||
s 0
|
||||
usemtl
|
||||
f 323/157/44 322/158/44 321/159/44
|
||||
f 327/159/45 325/160/45 326/158/45
|
||||
f 323/161/46 328/159/46 324/162/46
|
||||
f 324/163/47 327/158/47 322/164/47
|
||||
f 321/165/48 325/157/48 323/166/48
|
||||
f 323/157/44 324/160/44 322/158/44
|
||||
f 327/159/45 328/157/45 325/160/45
|
||||
f 323/161/46 325/158/46 328/159/46
|
||||
f 324/163/47 328/160/47 327/158/47
|
||||
f 321/165/48 326/159/48 325/157/48
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Loading…
x
Reference in New Issue
Block a user