Merge branch 'HbmMods:master' into master

This commit is contained in:
NotMega 2026-07-17 09:02:38 +03:00 committed by GitHub
commit dd1a2a6c1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
42 changed files with 1350 additions and 39 deletions

View File

@ -1,4 +1,5 @@
## Changed
* Updated russian and chinese localization
* Updated the trinitite ore textures
* The ore spots are now smaller and more shard-like
* Each trinitite ore block now has four randomized texture variants
@ -9,7 +10,14 @@
* This is a straight downgrade but people for some reason wanted it so sure why not
* Cable diodes now have a GUI for configuration instead of requiring tools
* The throughput can now be configured more precisely instead of increments of powers of 10
* The magnetic storage barrel now uses BSCCO and has a new texture
## Fixed
* Fixed burner press GUI offsets being incorrect
* Potentially fixed an issue with journey map where slaked sellafite would sometimes get the wrong color in the minimap
* Potentially fixed an issue with journey map where slaked sellafite would sometimes get the wrong color in the minimap
* Finally fixed an issue making electric armor way worse than it should be, as well as preventing the vanilla armor points from working almost entirely
* Fixed pneumatic storage exporter duping filter items when broken
* Re-enabled the GTNH-NEI filter slot integration
* Fixed various GUI title offsets
* Fixed mask man announcement being sent 20 minutes before spawn (therefore never being sent at all) instead of one minute as intended
* Fixed old BAT9000 recycling

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=5751
mod_build_number=5758
credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\

View File

@ -73,9 +73,9 @@ public class BlockPile extends BlockContainer implements IBlockCT, IToolable {
this.rec = IBlockCT.primeReceiver(reg, this.blockIcon.getIconName(), this.blockIcon);
this.recTop = IBlockCT.primeReceiver(reg, this.iconTop.getIconName(), this.iconTop);
this.recChanIn = IBlockCT.primeReceiver(reg, "pile_block_input", this.blockIcon);
this.recChanOut = IBlockCT.primeReceiver(reg, "pile_block_output", this.blockIcon);
this.recCon = IBlockCT.primeReceiver(reg, "pile_block_control_top", this.iconTop);
this.recChanIn = IBlockCT.primeReceiver(reg, RefStrings.MODID + ":pile_block_input", this.blockIcon);
this.recChanOut = IBlockCT.primeReceiver(reg, RefStrings.MODID + ":pile_block_output", this.blockIcon);
this.recCon = IBlockCT.primeReceiver(reg, RefStrings.MODID + ":pile_block_control_top", this.iconTop);
}
@Override

View File

@ -129,7 +129,11 @@ public class BlockPileBrick extends Block implements IToolable {
core.orientation = PileOrientation.getOrientation(dir);
core.setupSize(posHeight + negHeight + 1, left + right + 1, depth + 1);
} else {
boolean isEdge = h == -negHeight || h == posHeight || v == -left || v == right || d == 0 || d == depth;
int edgeCount = 0;
if(h == -negHeight || h == posHeight) edgeCount++;
if(v == -left || v == right) edgeCount++;
if(d == 0 || d == depth) edgeCount++;
boolean isEdge = edgeCount > 1;
world.setBlock(iX, iY, iZ, ModBlocks.pile_block, isEdge ? BlockPile.META_EDGE : BlockPile.META_DUMMY, 3);
TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) world.getTileEntity(iX, iY, iZ);
pile.setCore(x, y, z);

View File

@ -1,16 +1,24 @@
package com.hbm.blocks.machine.pile;
import java.util.List;
import com.hbm.blocks.IBlockMulti;
import com.hbm.tileentity.machine.pile.TileEntityPileControl;
import com.hbm.tileentity.machine.pile.TileEntityPileLoader;
import com.hbm.tileentity.machine.pile.TileEntityPileVent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class BlockPileDevice extends BlockContainer {
public class BlockPileDevice extends BlockContainer implements IBlockMulti {
public static final int ITEM_META_LOADER = 0;
public static final int ITEM_META_VENT = 1;
@ -24,8 +32,22 @@ public class BlockPileDevice extends BlockContainer {
super(Material.iron);
}
@Override
public int getSubCount() {
return 3;
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < getSubCount(); ++i) {
list.add(new ItemStack(item, 1, i));
}
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
meta -= meta % 4;
if(meta == BLOCK_META_LOADER) return new TileEntityPileLoader();
if(meta == BLOCK_META_VENT) return new TileEntityPileVent();
if(meta == BLOCK_META_CONTROL) return new TileEntityPileControl();

View File

@ -32,7 +32,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
@ -215,8 +214,10 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock,
@Override
public void receiveControl(NBTTagCompound data) {
if(data.hasKey("capacity")) this.limit = MathHelper.clamp_int(data.getInteger("limit"), 0, 1_000_000_000);
if(data.hasKey("limit")) this.limit = data.getLong("limit");
if(data.hasKey("priority")) this.priority = EnumUtil.grabEnumSafely(ConnectionPriority.class, data.getByte("priority"));
if(limit < 0) limit = 0;
if(limit > 10_000_000_000L) limit = 10_000_000_000L;
this.markDirty();
}

View File

@ -3,7 +3,12 @@ package com.hbm.blocks.network.pneumatic;
import com.hbm.blocks.machine.BlockMachineBase;
import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageExporter;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
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;
@ -17,4 +22,51 @@ public class PneumoStorageExporter extends BlockMachineBase {
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityPneumoStorageExporter();
}
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
TileEntity te = world.getTileEntity(x, y, z);
if(!(te instanceof ISidedInventory)) return;
ISidedInventory tileentityfurnace = (ISidedInventory) te;
if(tileentityfurnace != null) {
for(int i = 9; i < tileentityfurnace.getSizeInventory(); ++i) {
ItemStack itemstack = tileentityfurnace.getStackInSlot(i);
if(itemstack != null) {
float mX = world.rand.nextFloat() * 0.8F + 0.1F;
float mY = world.rand.nextFloat() * 0.8F + 0.1F;
float mZ = world.rand.nextFloat() * 0.8F + 0.1F;
while(itemstack.stackSize > 0) {
int amount = world.rand.nextInt(21) + 10;
if(amount > itemstack.stackSize) amount = itemstack.stackSize;
itemstack.stackSize -= amount;
EntityItem entityitem = new EntityItem(world, x + mX, y + mY, z + mZ, new ItemStack(itemstack.getItem(), amount, itemstack.getItemDamage()));
if(itemstack.hasTagCompound())
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
float motion = 0.05F;
entityitem.motionX = (float) world.rand.nextGaussian() * motion;
entityitem.motionY = (float) world.rand.nextGaussian() * motion + 0.2F;
entityitem.motionZ = (float) world.rand.nextGaussian() * motion;
world.spawnEntityInWorld(entityitem);
}
}
}
world.func_147453_f(x, y, z, block);
}
super.breakBlock(world, x, y, z, block, meta);
}
}

View File

@ -46,7 +46,7 @@ public class BossSpawnHandler {
public static void rollTheDice(World world) {
/*
* Spawns every 3 hours with a 33% chance if
* Spawns every 20 minutes if
* - the player is 3 blocks below the surface
* - the player has at least 50 RAD
* - the player has either crafted or placed an ore acidizer before
@ -70,7 +70,7 @@ public class BossSpawnHandler {
data.maskManTimer++;
if(data.maskManTimer == MobConfig.maskmanDelay - 20 * 60) {
if(data.maskManTimer == MobConfig.maskmanDelay - 60) {
player.addChatComponentMessage(new ChatComponentText("The mask man draws near.").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
}

View File

@ -44,7 +44,7 @@ public class GUICrystallizer extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.acidomatic.hasCustomInventoryName() ? this.acidomatic.getInventoryName() : I18n.format(this.acidomatic.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}

View File

@ -37,9 +37,9 @@ public class GUIDiode extends GuiScreen {
textThroughput = new GuiTextField(fontRendererObj, this.width / 2 - 150, 100, 90, 20);
textThroughput.setText("" + diode.limit);
textThroughput.setMaxStringLength(10);
textThroughput.setMaxStringLength(11);
buttonPriority = new GuiButton(0, this.width / 2 + 50, 100, 90, 20, diode.priority.name());
buttonPriority = new GuiButton(0, this.width / 2 + 20, 100, 90, 20, diode.priority.name());
}
@Override
@ -47,10 +47,10 @@ public class GUIDiode extends GuiScreen {
drawDefaultBackground();
drawString(fontRendererObj, "Throughput:", this.width / 2 - 150, 80, 0xA0A0A0);
drawString(fontRendererObj, "(max. 1,000,000,000 HE)", this.width / 2 - 150, 90, 0xA0A0A0);
drawString(fontRendererObj, "(max. 10,000,000,000 HE)", this.width / 2 - 150, 90, 0xA0A0A0);
textThroughput.drawTextBox();
drawString(fontRendererObj, "Priority:", this.width / 2 + 50, 80, 0xA0A0A0);
drawString(fontRendererObj, "Priority:", this.width / 2 + 20, 80, 0xA0A0A0);
buttonPriority.drawButton(mc, mouseX, mouseY);
super.drawScreen(mouseX, mouseY, partialTicks);
@ -63,7 +63,7 @@ public class GUIDiode extends GuiScreen {
NBTTagCompound data = new NBTTagCompound();
data.setByte("priority", (byte) priority);
try { data.setInteger("limit", Integer.parseInt(textThroughput.getText())); } catch(Exception ex) {}
try { data.setLong("limit", Long.parseLong(textThroughput.getText())); } catch(Exception ex) {}
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, diode.xCoord, diode.yCoord, diode.zCoord));
}

View File

@ -47,7 +47,7 @@ public class GUIMachineCyclotron extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.cyclotron.hasCustomInventoryName() ? this.cyclotron.getInventoryName() : I18n.format(this.cyclotron.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(name, 79 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 15, this.ySize - 96 + 2, 4210752);
}

View File

@ -12,7 +12,7 @@ import net.minecraft.util.ResourceLocation;
public class GUIMachineEPress extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_epress.png");
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_electric_press.png");
private TileEntityMachineEPress press;
public GUIMachineEPress(InventoryPlayer invPlayer, TileEntityMachineEPress tedf) {
@ -34,7 +34,7 @@ public class GUIMachineEPress extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.press.hasCustomInventoryName() ? this.press.getInventoryName() : I18n.format(this.press.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(name, 89 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}

View File

@ -15,7 +15,7 @@ import com.hbm.util.i18n.I18nUtil;
public class GUIMachineElectricFurnace extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/GUIElectricFurnace.png");
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_electric_furnace.png");
private TileEntityMachineElectricFurnace furnace;
public GUIMachineElectricFurnace(InventoryPlayer invPlayer, TileEntityMachineElectricFurnace furnace) {
@ -43,7 +43,7 @@ public class GUIMachineElectricFurnace extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.furnace.hasCustomInventoryName() ? this.furnace.getInventoryName() : I18n.format(this.furnace.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}
@ -74,7 +74,7 @@ public class GUIMachineElectricFurnace extends GuiInfoContainer {
int p = furnace.getProgressScaled(28);
drawTexturedModalRect(guiLeft + 43, guiTop + 36, 176, 0, p, 12);
this.drawInfoPanel(guiLeft + 116, guiTop + 20, 8, 8, 8);
this.drawInfoPanel(guiLeft + 115, guiTop + 19, 8, 8, 8);
}
}

View File

@ -14,7 +14,7 @@ import net.minecraft.util.ResourceLocation;
public class GUIMachinePress extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_press.png");
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_press.png");
private TileEntityMachinePress press;
public GUIMachinePress(InventoryPlayer invPlayer, TileEntityMachinePress tedf) {
@ -48,7 +48,7 @@ public class GUIMachinePress extends GuiInfoContainer {
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
if(press.burnTime >= 20) {
this.drawTexturedModalRect(guiLeft + 27, guiTop + 36, 0, 214, 14, 14);
this.drawTexturedModalRect(guiLeft + 26, guiTop + 36, 0, 214, 14, 14);
}
int k = (int) (press.renderPress * 16 / press.maxPress);

View File

@ -52,7 +52,7 @@ public class GUIMachineRTG extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.rtg.hasCustomInventoryName() ? this.rtg.getInventoryName() : I18n.format(this.rtg.getInventoryName());
this.fontRendererObj.drawString(name, 13 ,7, 10925486);
this.fontRendererObj.drawString(name, 60 - this.fontRendererObj.getStringWidth(name) / 2, 7, 10925486);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}

View File

@ -13,7 +13,7 @@ import net.minecraft.util.ResourceLocation;
public class GUIMachineShredder extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_shredder.png");
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_shredder.png");
private TileEntityMachineShredder diFurnace;
public GUIMachineShredder(InventoryPlayer invPlayer, TileEntityMachineShredder tedf) {
@ -45,7 +45,7 @@ public class GUIMachineShredder extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(name, 106 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}

View File

@ -731,7 +731,7 @@ public class AnvilRecipes extends SerializableRecipe {
}
).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.machine_bat9000, 1, 1),
new ComparableStack(ModBlocks.machine_bat9000, 1),
new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.plate_welded, 4, Mats.MAT_TCALLOY.id)),
new AnvilOutput(new ItemStack(ModItems.plate_steel, 16))

View File

@ -26,7 +26,6 @@ public class ArmorFSBPowered extends ArmorFSB implements IBatteryItem {
this.chargeRate = chargeRate;
this.consumption = consumption;
this.drain = drain;
this.setMaxDamage(1);
}
@SideOnly(Side.CLIENT)

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings {
public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (5751)";
public static final String VERSION = "1.0.27 BETA (5758)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -80,6 +80,7 @@ import com.hbm.tileentity.machine.*;
import com.hbm.tileentity.machine.albion.*;
import com.hbm.tileentity.machine.fusion.*;
import com.hbm.tileentity.machine.oil.*;
import com.hbm.tileentity.machine.pile.*;
import com.hbm.tileentity.machine.rbmk.*;
import com.hbm.tileentity.machine.storage.*;
import com.hbm.tileentity.network.*;
@ -375,6 +376,10 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineStrandCaster.class, new RenderStrandCaster());
//CHICAGO PILE
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPileLoader.class, new RenderPileLoader());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPileVent.class, new RenderPileVent());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPileControl.class, new RenderPileControl());
//ZIRNOX
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorZirnox.class, new RenderZirnox());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityZirnoxDestroyed.class, new RenderZirnoxDestroyed());

View File

@ -394,6 +394,11 @@ public class ResourceManager {
public static final IModelCustom siege_ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/siege_ufo.obj"));
public static final IModelCustom glyphid = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/glyphid.obj"));
public static final IModelCustom drone = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/quadcopter.obj"));
//PILE
public static final IModelCustom pile_loader = new HFRWavefrontObject("models/pile/pile_loader.obj").asVBO();
public static final IModelCustom pile_vent = new HFRWavefrontObject("models/pile/pile_vent.obj").asVBO();
public static final IModelCustom pile_control = new HFRWavefrontObject("models/pile/pile_control.obj").asVBO();
//ZIRNOX
public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")).asVBO();
@ -841,6 +846,11 @@ public class ResourceManager {
public static final ResourceLocation glyphid_scout_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_scout.png");
public static final ResourceLocation glyphid_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_nuclear.png");
public static final ResourceLocation glyphid_digger_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_digger.png");
//PILE
public static final ResourceLocation pile_loader_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pile/pile_loader.png");
public static final ResourceLocation pile_vent_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pile/pile_vent.png");
public static final ResourceLocation pile_control_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pile/pile_control.png");
//ZIRNOX
public static final ResourceLocation zirnox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox.png");

View File

@ -0,0 +1,34 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderPileControl extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
switch(te.getBlockMetadata() % 4) {
case 0: GL11.glRotated(90, 0, 1, 0); break;
case 1: GL11.glRotated(270, 0, 1, 0); break;
case 2: GL11.glRotated(180, 0, 1, 0); break;
case 3: GL11.glRotated(0, 0, 1, 0); break;
}
bindTexture(ResourceManager.pile_control_tex);
ResourceManager.pile_control.renderPart("Base");
GL11.glTranslated(0, 0.5, 0);
ResourceManager.pile_control.renderPart("Rod");
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
}

View File

@ -0,0 +1,77 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.pile.BlockPileDevice;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.IItemRenderer;
public class RenderPileLoader extends TileEntitySpecialRenderer implements IItemRendererProvider {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
switch(te.getBlockMetadata() % 4) {
case 0: GL11.glRotated(90, 0, 1, 0); break;
case 1: GL11.glRotated(270, 0, 1, 0); break;
case 2: GL11.glRotated(180, 0, 1, 0); break;
case 3: GL11.glRotated(0, 0, 1, 0); break;
}
bindTexture(ResourceManager.pile_loader_tex);
ResourceManager.pile_loader.renderPart("Loader");
GL11.glPushMatrix(); {
GL11.glTranslated(-0.1875, 0.5, 0);
GL11.glRotated(90, 0, 0, 1);
GL11.glTranslated(0.1875, -0.5, 0);
ResourceManager.pile_loader.renderPart("Lever");
} GL11.glPopMatrix();
ResourceManager.pile_loader.renderPart("Slider");
ResourceManager.pile_loader.renderPart("Rod");
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
@Override
public Item getItemForRenderer() {
return Item.getItemFromBlock(ModBlocks.pile_device);
}
@Override
public IItemRenderer getRenderer() {
return new ItemRenderBase() {
public void renderInventory() {
GL11.glTranslated(0, -3.5, 0);
double scale = 10;
GL11.glScaled(scale, scale, scale);
}
public void renderCommonWithStack(ItemStack item) {
GL11.glShadeModel(GL11.GL_SMOOTH);
if(item.getItemDamage() == BlockPileDevice.ITEM_META_LOADER) {
bindTexture(ResourceManager.pile_loader_tex);
ResourceManager.pile_loader.renderAll();
}
if(item.getItemDamage() == BlockPileDevice.ITEM_META_VENT) {
bindTexture(ResourceManager.pile_vent_tex);
ResourceManager.pile_vent.renderAll();
}
if(item.getItemDamage() == BlockPileDevice.ITEM_META_CONTROL) {
bindTexture(ResourceManager.pile_control_tex);
ResourceManager.pile_control.renderAll();
}
GL11.glShadeModel(GL11.GL_FLAT);
}};
}
}

View File

@ -0,0 +1,34 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderPileVent extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
switch(te.getBlockMetadata() % 4) {
case 0: GL11.glRotated(90, 0, 1, 0); break;
case 1: GL11.glRotated(270, 0, 1, 0); break;
case 2: GL11.glRotated(180, 0, 1, 0); break;
case 3: GL11.glRotated(0, 0, 1, 0); break;
}
bindTexture(ResourceManager.pile_vent_tex);
ResourceManager.pile_vent.renderPart("Pipe");
GL11.glRotated((te.getWorldObj().getTotalWorldTime() % 360 + interp) * 45, 0, -1, 0);
ResourceManager.pile_vent.renderPart("Fan");
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
}

View File

@ -2,14 +2,18 @@ package com.hbm.tileentity.machine.pile;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.MachinePWRController;
import com.hbm.blocks.machine.pile.BlockPile;
import com.hbm.interfaces.NotableComments;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.TileEntityTickingBase;
import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
@ -111,27 +115,47 @@ public class TileEntityPileCore extends TileEntityTickingBase {
}
public boolean drillChannel(int x, int y, int z, ForgeDirection dir, EntityPlayer player) {
int startMeta = worldObj.getBlockMetadata(x, y, z);
PileChannelType type = PileChannelType.getChannelType(dir, orientation);
int size =
type == PileChannelType.CONTROL ? height :
type == PileChannelType.FUEL ? depth : width;
List<PileChannel> list = getChannelList(type);
if(startMeta == BlockPile.META_FUEL_IN || startMeta == BlockPile.META_AIR_IN || startMeta == BlockPile.META_CONTROL) {
for(int i = 0; i < list.size(); i++) {
PileChannel chan = list.get(i);
if(chan.entry.compare(x, y, z) && chan.entry.getDir() == dir) {
list.remove(i);
for(int j = 0; j < size; j++) {
int iX = x + dir.offsetX * j;
int iY = y + dir.offsetY * j;
int iZ = z + dir.offsetZ * j;
worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_DUMMY, 3);
}
return true;
}
}
}
boolean error = false;
for(int i = 0; i <= size; i++) {
for(int i = 0; i < size; i++) {
int iX = x + dir.offsetX * i;
int iY = y + dir.offsetY * i;
int iZ = z + dir.offsetZ * i;
if(worldObj.getBlock(iX, iY, iZ) != ModBlocks.pile_block) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Foreign block in reactor", player); error = true; }
int meta = worldObj.getBlockMetadata(iX, iY, iZ);
if(meta == BlockPile.META_EDGE) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot drill along edge", player); error = true; }
if(meta == BlockPile.META_CORE) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot intersect core", player); error = true; }
if(meta == BlockPile.META_CHANNEL) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot intersect channel", player); error = true; }
if(meta != BlockPile.META_DUMMY) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot intersect channel IO", player); error = true; }
else if(meta == BlockPile.META_CORE) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot intersect core", player); error = true; }
else if(meta == BlockPile.META_CHANNEL) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot intersect channel", player); error = true; }
else if(meta != BlockPile.META_DUMMY) { MachinePWRController.sendError(worldObj, iX, iY, iZ, "Cannot intersect channel IO", player); error = true; }
}
if(error) return false;
for(int i = 0; i <= size; i++) {
for(int i = 0; i < size; i++) {
int iX = x + dir.offsetX * i;
int iY = y + dir.offsetY * i;
int iZ = z + dir.offsetZ * i;
@ -139,16 +163,15 @@ public class TileEntityPileCore extends TileEntityTickingBase {
if(type == PileChannelType.FUEL) worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_FUEL_IN, 3);
if(type == PileChannelType.VENTILATION) worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_AIR_IN, 3);
if(type == PileChannelType.CONTROL) worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_CONTROL, 3);
} else if(i == size) {
} else if(i == size - 1) {
if(type == PileChannelType.FUEL) worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_FUEL_OUT, 3);
if(type == PileChannelType.VENTILATION) worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_AIR_OUT, 3);
if(type == PileChannelType.CONTROL) worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_CONTROL, 3);
} else {
worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_DUMMY, 3);
worldObj.setBlockMetadataWithNotify(iX, iY, iZ, BlockPile.META_CHANNEL, 3);
}
}
List<PileChannel> list = getChannelList(type);
list.add(new PileChannel(x, y, z, dir, size, type));
this.markChanged();
@ -159,6 +182,27 @@ public class TileEntityPileCore extends TileEntityTickingBase {
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
if(worldObj.getTotalWorldTime() % 3 == 0) for(PileChannel chan : this.ventilationChannels) {
double x = chan.entry.getX() + 0.5 + chan.entry.getDir().offsetX * (this.width - 0.375);
double y = chan.entry.getY() + 0.5;
double z = chan.entry.getZ() + 0.5 + chan.entry.getDir().offsetZ * (this.width - 0.375);
Random rand = worldObj.rand;
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "tower");
data.setFloat("lift", 1F);
data.setFloat("base", 0.125F + rand.nextFloat() * 0.125F);
data.setFloat("max", 1F);
data.setFloat("strafe", 0.0025F);
data.setBoolean("noWind", true);
data.setInteger("life", 20 + worldObj.rand.nextInt(30));
data.setInteger("color", 0xa0a0a0);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150));
}
}
}
public void destroy() {

View File

@ -0,0 +1,318 @@
# Blender v2.79 (sub 0) OBJ File: 'pile_control.blend'
# www.blender.org
o Rod
v 0.187500 0.750000 -0.250000
v 0.250000 0.750000 -0.187500
v -0.250000 0.750000 -0.187500
v -0.187500 0.750000 -0.250000
v -0.187500 0.750000 0.250000
v -0.250000 0.750000 0.187500
v 0.250000 0.750000 0.187500
v 0.187500 0.750000 0.250000
v 0.250000 1.000000 -0.187500
v 0.187500 1.000000 -0.250000
v -0.187500 1.000000 -0.250000
v -0.250000 1.000000 -0.187500
v -0.250000 1.000000 0.187500
v -0.187500 1.000000 0.250000
v 0.187500 1.000000 0.250000
v 0.250000 1.000000 0.187500
v 0.187500 0.750000 -0.125000
v 0.125000 0.750000 -0.187500
v -0.125000 0.750000 -0.187500
v -0.187500 0.750000 -0.125000
v -0.187500 0.750000 0.125000
v -0.125000 0.750000 0.187500
v 0.125000 0.750000 0.187500
v 0.187500 0.750000 0.125000
v 0.125000 0.000000 -0.187500
v 0.187500 0.000000 -0.125000
v -0.187500 0.000000 -0.125000
v -0.125000 0.000000 -0.187500
v -0.125000 0.000000 0.187500
v -0.187500 0.000000 0.125000
v 0.187500 0.000000 0.125000
v 0.125000 0.000000 0.187500
vt 0.618182 0.600000
vt 0.509091 0.700000
vt 0.509091 0.600000
vt 0.872727 0.600000
vt 0.763636 0.700000
vt 0.763636 0.600000
vt 0.490909 0.600000
vt 0.381818 0.700000
vt 0.381818 0.600000
vt 0.618182 0.700000
vt 0.636364 0.725000
vt 0.490909 0.875000
vt 0.490909 0.575000
vt 0.509091 0.400000
vt 0.745455 1.000000
vt 0.818182 0.700000
vt 0.818182 1.000000
vt 0.927273 1.000000
vt 1.000000 0.700000
vt 1.000000 1.000000
vt 0.654545 1.000000
vt 0.727273 0.700000
vt 0.727273 1.000000
vt 0.636364 0.700000
vt 0.636364 0.600000
vt 0.490909 0.700000
vt 0.363636 0.600000
vt 0.745455 0.600000
vt 0.745455 0.700000
vt 0.745455 0.700000
vt 0.636364 0.700000
vt 0.636364 1.000000
vt 0.909091 0.700000
vt 0.927273 0.700000
vt 0.836364 1.000000
vt 0.909091 1.000000
vt 0.872727 0.700000
vt 0.636364 0.875000
vt 0.618182 0.900000
vt 0.509091 0.900000
vt 0.490909 0.725000
vt 0.618182 0.400000
vt 0.636364 0.425000
vt 0.636364 0.575000
vt 0.490909 0.425000
vt 0.654545 0.700000
vt 0.363636 0.700000
vt 0.836364 0.700000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 -0.0000
vn -0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.7071 0.0000 -0.7071
vn 0.7071 0.0000 0.7071
vn -0.7071 0.0000 0.7071
vn -0.7071 0.0000 -0.7071
vn 0.0000 0.0000 -1.0000
s off
f 2/1/1 16/2/1 7/3/1
f 6/4/2 12/5/2 3/6/2
f 8/7/3 14/8/3 5/9/3
f 9/10/4 10/11/4 14/12/4
f 2/1/5 8/13/5 6/14/5
f 24/15/1 26/16/1 17/17/1
f 20/18/2 30/19/2 21/20/2
f 22/21/3 32/22/3 23/23/3
f 10/24/6 2/1/6 1/25/6
f 8/7/7 16/2/7 15/26/7
f 14/8/8 6/27/8 5/9/8
f 4/28/9 12/5/9 11/29/9
f 4/28/10 10/24/10 1/25/10
f 24/15/7 32/22/7 31/30/7
f 30/31/8 22/21/8 21/32/8
f 20/18/9 28/33/9 27/34/9
f 26/16/6 18/35/6 17/17/6
f 18/35/10 28/33/10 19/36/10
f 2/1/1 9/10/1 16/2/1
f 6/4/2 13/37/2 12/5/2
f 8/7/3 15/26/3 14/8/3
f 10/11/4 11/38/4 12/39/4
f 12/39/4 13/40/4 10/11/4
f 13/40/4 14/12/4 10/11/4
f 14/12/4 15/41/4 16/2/4
f 16/2/4 9/10/4 14/12/4
f 6/14/5 3/42/5 4/43/5
f 4/43/5 1/44/5 2/1/5
f 2/1/5 7/3/5 8/13/5
f 8/13/5 5/45/5 6/14/5
f 6/14/5 4/43/5 2/1/5
f 24/15/1 31/30/1 26/16/1
f 20/18/2 27/34/2 30/19/2
f 22/21/3 29/46/3 32/22/3
f 10/24/6 9/10/6 2/1/6
f 8/7/7 7/3/7 16/2/7
f 14/8/8 13/47/8 6/27/8
f 4/28/9 3/6/9 12/5/9
f 4/28/10 11/29/10 10/24/10
f 24/15/7 23/23/7 32/22/7
f 30/31/8 29/46/8 22/21/8
f 20/18/9 19/36/9 28/33/9
f 26/16/6 25/48/6 18/35/6
f 18/35/10 25/48/10 28/33/10
o Base
v -0.375000 0.000000 -0.375000
v -0.375000 0.000000 0.375000
v 0.375000 0.000000 -0.375000
v 0.375000 0.000000 0.375000
v -0.375000 0.250000 -0.375000
v -0.375000 0.250000 0.375000
v 0.375000 0.250000 -0.375000
v 0.375000 0.250000 0.375000
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
v 0.375000 0.625000 0.125000
v 0.375000 0.625000 -0.125000
v 0.375000 0.375000 0.125000
v 0.375000 0.375000 -0.125000
v -0.250000 0.250000 -0.187500
v -0.187500 0.250000 -0.250000
v -0.187500 0.250000 0.250000
v -0.250000 0.250000 0.187500
v 0.187500 0.250000 -0.250000
v 0.250000 0.250000 -0.187500
v 0.250000 0.250000 0.187500
v 0.187500 0.250000 0.250000
v 0.250000 0.750000 -0.187500
v 0.187500 0.750000 -0.250000
v -0.187500 0.750000 -0.250000
v -0.250000 0.750000 -0.187500
v -0.250000 0.750000 0.187500
v -0.187500 0.750000 0.250000
v 0.187500 0.750000 0.250000
v 0.250000 0.750000 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.312500 0.312500 -0.187500
v 0.250000 0.687500 0.187500
v 0.250000 0.687500 -0.187500
v 0.250000 0.312500 0.187500
v 0.250000 0.312500 -0.187500
vt 0.290909 0.800000
vt 0.072727 0.500000
vt 0.290909 0.500000
vt 0.072727 0.400000
vt 0.290909 0.100000
vt 0.290909 0.400000
vt 0.290909 -0.000000
vt 0.072727 0.100000
vt 0.072727 -0.000000
vt 0.000000 0.100000
vt 0.000000 0.400000
vt 0.363636 0.400000
vt 0.363636 0.100000
vt 0.618182 0.000000
vt 0.509091 0.200000
vt 0.509091 -0.000000
vt 0.872727 0.000000
vt 0.763636 0.200000
vt 0.763636 0.000000
vt 0.618182 0.200000
vt 0.636364 0.225000
vt 0.490909 0.375000
vt 0.490909 -0.000000
vt 0.381818 0.200000
vt 0.381818 0.000000
vt 0.909091 0.325000
vt 0.927273 0.450000
vt 0.909091 0.425000
vt 0.363636 0.000000
vt 0.363636 0.200000
vt 0.745455 0.000000
vt 0.636364 0.200000
vt 0.636364 0.000000
vt 0.872727 0.325000
vt 0.800000 0.425000
vt 0.800000 0.325000
vt 0.909091 0.575000
vt 0.872727 0.475000
vt 0.909091 0.475000
vt 0.909091 0.125000
vt 0.872727 0.025000
vt 0.909091 0.025000
vt 0.909091 0.275000
vt 0.872727 0.175000
vt 0.909091 0.175000
vt 0.927273 0.600000
vt 0.927273 0.150000
vt 0.927273 0.300000
vt 0.945455 0.300000
vt 0.945455 0.450000
vt 0.945455 0.600000
vt 0.927273 -0.000000
vt 0.945455 0.150000
vt 0.072727 0.800000
vt 0.872727 0.200000
vt 0.636364 0.375000
vt 0.618182 0.400000
vt 0.509091 0.400000
vt 0.490909 0.225000
vt 0.490909 0.200000
vt 0.745455 0.200000
vt 0.872727 0.425000
vt 0.872727 0.575000
vt 0.872727 0.125000
vt 0.872727 0.275000
vt 0.945455 -0.000000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 -0.0000
vn -0.0000 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
vn 0.7071 0.7071 0.0000
vn 0.7071 0.0000 0.7071
vn -0.7071 0.0000 0.7071
vn -0.7071 0.0000 -0.7071
vn 0.7071 0.0000 -0.7071
vn 0.7071 -0.7071 0.0000
s off
f 35/49/11 34/50/11 33/51/11
f 38/52/12 39/53/12 37/54/12
f 35/55/13 40/56/13 36/57/13
f 34/50/14 37/54/14 33/51/14
f 36/58/15 38/52/15 34/59/15
f 33/60/16 39/53/16 35/61/16
f 54/62/13 64/63/13 55/64/13
f 52/65/14 60/66/14 49/67/14
f 57/68/12 58/69/12 62/70/12
f 56/71/15 62/72/15 51/73/15
f 46/74/17 65/75/17 45/76/17
f 64/63/18 56/71/18 55/64/18
f 52/77/19 62/72/19 61/78/19
f 60/66/20 50/79/20 49/67/20
f 54/62/21 58/80/21 57/68/21
f 50/79/16 58/80/16 53/81/16
f 43/82/13 41/83/13 42/84/13
f 45/76/12 43/82/12 46/74/12
f 47/85/15 44/86/15 45/87/15
f 48/88/11 41/89/11 47/90/11
f 46/91/16 42/92/16 48/93/16
f 45/87/18 67/94/18 47/85/18
f 47/90/22 68/95/22 48/88/22
f 46/91/21 68/95/21 66/96/21
f 68/95/16 70/97/16 66/96/16
f 66/96/12 69/98/12 65/75/12
f 65/75/15 71/99/15 67/94/15
f 67/100/11 72/101/11 68/95/11
f 35/49/11 36/102/11 34/50/11
f 38/52/12 40/56/12 39/53/12
f 35/55/13 39/53/13 40/56/13
f 34/50/14 38/52/14 37/54/14
f 36/58/15 40/56/15 38/52/15
f 33/60/16 37/54/16 39/53/16
f 54/62/13 57/68/13 64/63/13
f 52/65/14 61/103/14 60/66/14
f 58/69/12 59/104/12 60/105/12
f 60/105/12 61/106/12 58/69/12
f 61/106/12 62/70/12 58/69/12
f 62/70/12 63/107/12 64/63/12
f 64/63/12 57/68/12 62/70/12
f 56/71/15 63/108/15 62/72/15
f 46/74/17 66/96/17 65/75/17
f 64/63/18 63/108/18 56/71/18
f 52/77/19 51/73/19 62/72/19
f 60/66/20 59/109/20 50/79/20
f 54/62/21 53/81/21 58/80/21
f 50/79/16 59/109/16 58/80/16
f 43/82/13 44/110/13 41/83/13
f 45/76/12 44/110/12 43/82/12
f 47/85/15 41/111/15 44/86/15
f 48/88/11 42/112/11 41/89/11
f 46/91/16 43/113/16 42/92/16
f 45/87/18 65/75/18 67/94/18
f 47/90/22 67/100/22 68/95/22
f 46/91/21 48/93/21 68/95/21
f 68/95/16 72/101/16 70/97/16
f 66/96/12 70/97/12 69/98/12
f 65/75/15 69/98/15 71/99/15
f 67/100/11 71/114/11 72/101/11

View File

@ -0,0 +1,325 @@
# Blender v2.79 (sub 0) OBJ File: 'pile_loader.blend'
# www.blender.org
o Rod
v 0.312500 0.500000 0.125000
v 0.312500 0.437500 0.062500
v 0.312500 0.437500 -0.062500
v 0.312500 0.500000 -0.125000
v 0.312500 0.687500 0.062500
v 0.312500 0.625000 0.125000
v 0.312500 0.625000 -0.125000
v 0.312500 0.687500 -0.062500
v -0.187500 0.625000 0.125000
v -0.187500 0.687500 0.062500
v -0.187500 0.687500 -0.062500
v -0.187500 0.625000 -0.125000
v -0.187500 0.437500 0.062500
v -0.187500 0.500000 0.125000
v -0.187500 0.500000 -0.125000
v -0.187500 0.437500 -0.062500
vt 0.833333 0.071429
vt 1.000000 0.119048
vt 0.833333 0.119048
vt 0.833333 0.214286
vt 1.000000 0.261905
vt 0.833333 0.261905
vt 0.833333 0.142857
vt 1.000000 0.190476
vt 0.833333 0.190476
vt 0.833333 -0.000000
vt 1.000000 0.047619
vt 0.833333 0.047619
vt 0.833333 0.285714
vt 1.000000 0.071429
vt 1.000000 0.142857
vt 1.000000 0.214286
vt 1.000000 -0.000000
vt 1.000000 0.285714
vn 0.0000 -0.3827 -0.9239
vn 0.0000 0.3827 -0.9239
vn 0.0000 0.3827 0.9239
vn 0.0000 -0.3827 0.9239
vn 0.0000 0.9239 -0.3827
vn 0.0000 0.9239 0.3827
vn 0.0000 -0.9239 0.3827
vn 0.0000 -0.9239 -0.3827
s 1
f 4/1/1 12/2/2 7/3/2
f 6/4/3 14/5/4 1/6/4
f 8/7/5 10/8/6 5/9/6
f 2/10/7 16/11/8 3/12/8
f 14/5/4 2/13/7 1/6/4
f 4/1/1 16/11/8 15/14/1
f 8/7/5 12/2/2 11/15/5
f 6/4/3 10/8/6 9/16/3
f 4/1/1 15/14/1 12/2/2
f 6/4/3 9/16/3 14/5/4
f 8/7/5 11/15/5 10/8/6
f 2/10/7 13/17/7 16/11/8
f 14/5/4 13/18/7 2/13/7
f 4/1/1 3/12/8 16/11/8
f 8/7/5 7/3/2 12/2/2
f 6/4/3 5/9/6 10/8/6
o Lever
v -0.093750 0.468750 -0.312500
v -0.093750 0.468750 -0.375000
v -0.093750 0.531250 -0.375000
v -0.093750 0.531250 -0.312500
v -0.218750 0.531250 -0.375000
v -0.218750 0.468750 -0.375000
v -0.156250 0.531250 -0.312500
v -0.156250 0.468750 -0.312500
v -0.156250 0.468750 -0.250000
v -0.156250 0.531250 -0.250000
v -0.218750 0.468750 -0.250000
v -0.218750 0.531250 -0.250000
v -0.093750 0.562500 -0.406250
v -0.093750 0.437500 -0.406250
v -0.093750 0.562500 -0.281250
v -0.093750 0.437500 -0.281250
v 0.531250 0.562500 -0.281250
v 0.531250 0.562500 -0.406250
v 0.531250 0.437500 -0.406250
v 0.531250 0.437500 -0.281250
vt 0.979167 0.642857
vt 0.958333 0.666667
vt 0.958333 0.619048
vt 0.937500 0.666667
vt 0.937500 0.619048
vt 0.937500 0.571429
vt 0.916667 0.595238
vt 0.916667 0.571429
vt 0.958333 0.571429
vt 0.979167 0.595238
vt 1.000000 0.571429
vt 0.979167 0.571429
vt 0.916667 0.642857
vt 0.916667 0.666667
vt 1.000000 0.642857
vt 0.979167 0.666667
vt 0.958333 0.571429
vt 0.916667 0.333333
vt 0.958333 0.333333
vt 0.833333 0.333333
vt 0.875000 0.285714
vt 0.875000 0.333333
vt 0.875000 0.619048
vt 0.833333 0.571429
vt 0.875000 0.571429
vt 1.000000 0.571429
vt 1.000000 0.333333
vt 0.916667 0.571429
vt 1.000000 0.595238
vt 1.000000 0.666667
vt 0.833333 0.285714
vt 0.833333 0.619048
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
s off
f 23/19/9 19/20/9 21/21/9
f 21/21/10 18/22/10 22/23/10
f 27/24/11 24/25/11 25/26/11
f 28/27/9 23/28/9 21/21/9
f 25/29/12 23/28/12 26/30/12
f 28/27/13 22/23/13 27/24/13
f 24/31/11 18/22/11 17/32/11
f 24/33/14 20/34/14 23/19/14
f 32/35/11 35/36/11 36/37/11
f 33/38/12 35/39/12 34/40/12
f 30/41/13 31/42/13 29/43/13
f 31/44/14 36/37/14 33/45/14
f 29/43/9 33/38/9 34/40/9
f 29/43/10 35/36/10 30/46/10
f 23/19/9 20/34/9 19/20/9
f 21/21/10 19/20/10 18/22/10
f 27/24/11 22/23/11 24/25/11
f 28/27/9 26/30/9 23/28/9
f 25/29/12 24/47/12 23/28/12
f 28/27/13 21/21/13 22/23/13
f 24/31/11 22/23/11 18/22/11
f 24/33/14 17/48/14 20/34/14
f 32/35/11 30/46/11 35/36/11
f 33/38/12 36/49/12 35/39/12
f 30/41/13 32/50/13 31/42/13
f 31/44/14 32/35/14 36/37/14
f 29/43/9 31/42/9 33/38/9
f 29/43/10 34/40/10 35/36/10
o Slider
v 0.437500 0.437500 0.125000
v 0.437500 0.437500 -0.125000
v 0.312500 0.437500 0.125000
v 0.312500 0.437500 -0.125000
v 0.437500 0.687500 0.125000
v 0.437500 0.687500 -0.125000
v 0.312500 0.687500 0.125000
v 0.312500 0.687500 -0.125000
vt 0.625000 0.761905
vt 0.583333 0.857143
vt 0.583333 0.761905
vt 0.500000 0.761905
vt 0.500000 0.857143
vt 0.708333 0.857143
vt 0.708333 0.761905
vt 0.625000 0.857143
vn 0.0000 1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
s off
f 44/51/15 41/52/15 42/53/15
f 38/54/16 41/52/16 37/55/16
f 39/56/17 44/51/17 40/57/17
f 44/51/15 43/58/15 41/52/15
f 38/54/16 42/53/16 41/52/16
f 39/56/17 43/58/17 44/51/17
o Loader
v -0.500000 0.875000 0.375000
v -0.500000 0.125000 0.375000
v -0.500000 0.875000 -0.375000
v -0.500000 0.125000 -0.375000
v -0.250000 0.875000 -0.375000
v -0.250000 0.875000 0.375000
v -0.250000 0.125000 0.375000
v -0.250000 0.125000 -0.375000
v -0.250000 0.687500 0.250000
v -0.250000 0.750000 0.187500
v -0.250000 0.250000 0.187500
v -0.250000 0.312500 0.250000
v -0.250000 0.750000 -0.187500
v -0.250000 0.687500 -0.250000
v -0.250000 0.312500 -0.250000
v -0.250000 0.250000 -0.187500
v 0.500000 0.687500 -0.250000
v 0.437500 0.750000 -0.125000
v 0.437500 0.750000 0.125000
v 0.500000 0.687500 0.250000
v 0.500000 0.312500 0.250000
v 0.500000 0.250000 0.187500
v 0.500000 0.250000 -0.187500
v 0.500000 0.312500 -0.250000
v 0.500000 0.750000 0.187500
v 0.500000 0.750000 -0.187500
v -0.187500 0.750000 0.125000
v -0.187500 0.750000 -0.125000
v -0.187500 0.437500 -0.125000
v -0.187500 0.437500 0.125000
v 0.437500 0.437500 0.125000
v 0.437500 0.437500 -0.125000
vt 0.750000 0.476190
vt 0.500000 0.761905
vt 0.500000 0.476190
vt 0.500000 0.095238
vt 0.750000 0.380952
vt 0.500000 0.380952
vt 0.750000 -0.000000
vt 0.500000 -0.000000
vt 0.833333 0.380952
vt 0.750000 0.095238
vt 0.833333 0.095238
vt 0.416667 0.095238
vt 0.416667 0.380952
vt 0.416667 0.642857
vt 0.166667 0.500000
vt 0.416667 0.500000
vt 0.416667 0.142857
vt 0.166667 0.000000
vt 0.416667 0.000000
vt 0.416667 0.309524
vt 0.166667 0.166667
vt 0.416667 0.166667
vt -0.000000 0.476190
vt 0.020833 0.309524
vt 0.166667 0.333333
vt 0.166667 0.666667
vt 0.416667 0.666667
vt 0.416667 0.476190
vt 0.166667 0.476190
vt 0.166667 0.309524
vt 0.187500 1.000000
vt 0.395833 0.880952
vt 0.395833 1.000000
vt 0.395833 0.452381
vt 0.187500 0.452381
vt 0.187500 0.357143
vt 0.416667 0.333333
vt 0.395833 0.357143
vt 0.187500 0.785714
vt 0.395833 0.785714
vt 0.500000 0.880952
vt 0.500000 0.785714
vt 0.083333 0.785714
vt 0.187500 0.880952
vt 0.083333 0.880952
vt 0.395833 0.666667
vt 0.187500 0.666667
vt 0.750000 0.761905
vt 0.166667 0.642857
vt 0.166667 0.142857
vt 0.145833 0.500000
vt 0.020833 0.500000
vt -0.000000 0.333333
vt 0.145833 0.309524
vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 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
s off
f 47/59/18 46/60/18 45/61/18
f 51/62/19 49/63/19 50/64/19
f 48/65/20 51/62/20 46/66/20
f 45/61/21 49/63/21 47/59/21
f 47/67/22 52/68/22 48/69/22
f 46/70/23 50/64/23 45/71/23
f 56/72/23 64/73/23 53/74/23
f 60/75/20 66/76/20 55/77/20
f 58/78/22 68/79/22 59/80/22
f 66/81/19 68/82/19 70/83/19
f 66/84/24 56/72/24 55/85/24
f 54/86/25 64/73/25 69/87/25
f 68/79/26 60/75/26 59/80/26
f 58/78/27 70/83/27 61/88/27
f 63/89/22 74/90/22 71/91/22
f 71/92/21 69/87/21 63/93/21
f 62/94/21 57/95/21 72/96/21
f 72/96/21 54/86/21 71/92/21
f 63/93/21 70/83/21 62/94/21
f 74/90/21 76/97/21 73/98/21
f 71/99/19 73/98/19 72/100/19
f 62/101/18 75/102/18 63/103/18
f 72/104/23 76/97/23 62/105/23
f 47/59/18 48/106/18 46/60/18
f 51/62/19 52/68/19 49/63/19
f 48/65/20 52/68/20 51/62/20
f 45/61/21 50/64/21 49/63/21
f 47/67/22 49/63/22 52/68/22
f 46/70/23 51/62/23 50/64/23
f 56/72/23 65/107/23 64/73/23
f 60/75/20 67/108/20 66/76/20
f 58/78/22 61/88/22 68/79/22
f 70/83/19 69/87/19 64/109/19
f 64/109/19 65/110/19 66/81/19
f 66/81/19 67/111/19 68/82/19
f 68/82/19 61/112/19 70/83/19
f 70/83/19 64/109/19 66/81/19
f 66/84/24 65/107/24 56/72/24
f 54/86/25 53/74/25 64/73/25
f 68/79/26 67/108/26 60/75/26
f 58/78/27 57/95/27 70/83/27
f 63/89/22 75/102/22 74/90/22
f 71/92/21 54/86/21 69/87/21
f 62/94/21 70/83/21 57/95/21
f 72/96/21 57/95/21 54/86/21
f 63/93/21 69/87/21 70/83/21
f 74/90/21 75/102/21 76/97/21
f 71/99/19 74/90/19 73/98/19
f 62/101/18 76/97/18 75/102/18
f 72/104/23 73/98/23 76/97/23

View File

@ -0,0 +1,378 @@
# Blender v2.79 (sub 0) OBJ File: 'pile_vent.blend'
# www.blender.org
o Fan
v 0.000000 0.812500 -0.031250
v -0.022097 0.812500 -0.022097
v -0.031250 0.812500 0.000000
v -0.022097 0.812500 0.022097
v 0.000000 0.812500 0.031250
v 0.022097 0.812500 0.022097
v 0.031250 0.812500 -0.000000
v 0.022097 0.812500 -0.022097
v -0.022097 0.875000 -0.022097
v -0.000000 0.875000 -0.031250
v -0.031250 0.875000 0.000000
v -0.022097 0.875000 0.022097
v -0.000000 0.875000 0.031250
v 0.022097 0.875000 0.022097
v 0.031250 0.875000 -0.000000
v 0.022097 0.875000 -0.022097
v -0.027063 0.859375 0.109375
v 0.027063 0.828125 0.109375
v -0.027063 0.859375 0.000000
v 0.027063 0.828125 0.000000
v -0.027063 0.828125 0.000000
v 0.027063 0.859375 0.000000
v -0.027063 0.828125 -0.109375
v 0.027063 0.859375 -0.109375
v 0.109375 0.859375 0.027063
v 0.109375 0.828125 -0.027063
v -0.000000 0.859375 0.027063
v -0.000000 0.828125 -0.027063
v -0.000000 0.828125 0.027063
v -0.000000 0.859375 -0.027063
v -0.109375 0.828125 0.027063
v -0.109375 0.859375 -0.027063
vt 0.048780 0.775000
vt 0.146341 0.825000
vt 0.048780 0.825000
vt 0.012195 0.775314
vt 0.020602 0.778883
vt 0.024084 0.787500
vt 0.146341 0.825000
vt 0.048780 0.775000
vt 0.146341 0.775000
vt 0.048780 0.775000
vt 0.146341 0.825000
vt 0.048780 0.825000
vt 0.146341 0.825000
vt 0.048780 0.775000
vt 0.146341 0.775000
vt 0.146341 0.775000
vt 0.020602 0.796117
vt 0.012195 0.799686
vt 0.003788 0.796117
vt 0.000306 0.787500
vt 0.003788 0.778883
vt 0.048780 0.825000
vt 0.146341 0.775000
vt 0.048780 0.825000
vt 0.146341 0.750000
vt 0.121951 0.775000
vt 0.121951 0.750000
vt 0.073171 0.750000
vt 0.097561 0.775000
vt 0.073171 0.775000
vt 0.024390 0.750000
vt 0.048780 0.775000
vt 0.024390 0.775000
vt 0.195122 0.750000
vt 0.170732 0.775000
vt 0.170732 0.750000
vt 0.097561 0.750000
vt 0.048780 0.750000
vt 0.000000 0.750000
vt 0.000000 0.775000
vt 0.146341 0.775000
vt 0.195122 0.775000
vn 0.5000 0.8660 0.0000
vn 0.0000 1.0000 0.0000
vn -0.5000 0.8660 0.0000
vn -0.0000 0.8660 -0.5000
vn 0.0000 0.8660 0.5000
vn 0.0000 -0.0000 -1.0000
vn 0.7071 0.0000 -0.7071
vn 0.7071 0.0000 0.7071
vn 1.0000 0.0000 0.0000
vn -0.7071 -0.0000 0.7071
vn -0.0000 0.0000 1.0000
vn -1.0000 -0.0000 0.0000
vn -0.7071 -0.0000 -0.7071
s off
f 18/1/1 19/2/1 17/3/1
f 15/4/2 16/5/2 10/6/2
f 22/7/3 23/8/3 21/9/3
f 26/10/4 27/11/4 25/12/4
f 30/13/5 31/14/5 29/15/5
f 18/1/1 20/16/1 19/2/1
f 10/6/2 9/17/2 11/18/2
f 11/18/2 12/19/2 10/6/2
f 12/19/2 13/20/2 10/6/2
f 13/20/2 14/21/2 10/6/2
f 14/21/2 15/4/2 10/6/2
f 22/7/3 24/22/3 23/8/3
f 26/10/4 28/23/4 27/11/4
f 30/13/5 32/24/5 31/14/5
s 1
f 1/25/6 16/26/7 8/27/7
f 6/28/8 15/29/9 14/30/8
f 4/31/10 13/32/11 12/33/10
f 3/34/12 9/35/13 2/36/13
f 8/27/7 15/29/9 7/37/9
f 5/38/11 14/30/8 13/32/11
f 3/39/12 12/33/10 11/40/12
f 2/36/13 10/41/6 1/25/6
f 1/25/6 10/41/6 16/26/7
f 6/28/8 7/37/9 15/29/9
f 4/31/10 5/38/11 13/32/11
f 3/34/12 11/42/12 9/35/13
f 8/27/7 16/26/7 15/29/9
f 5/38/11 6/28/8 14/30/8
f 3/39/12 4/31/10 12/33/10
f 2/36/13 9/35/13 10/41/6
o Pipe
v -0.500000 0.875000 0.375000
v -0.500000 0.125000 0.375000
v -0.500000 0.875000 -0.375000
v -0.500000 0.125000 -0.375000
v -0.375000 0.875000 -0.375000
v -0.375000 0.875000 0.375000
v -0.375000 0.125000 0.375000
v -0.375000 0.125000 -0.375000
v 0.500000 0.750000 0.250000
v 0.500000 0.250000 0.250000
v 0.500000 0.750000 -0.250000
v 0.500000 0.250000 -0.250000
v 0.375000 0.750000 -0.250000
v 0.375000 0.750000 0.250000
v 0.375000 0.250000 0.250000
v 0.375000 0.250000 -0.250000
v 0.375000 0.687500 0.187500
v 0.375000 0.312500 0.187500
v 0.375000 0.687500 -0.187500
v 0.375000 0.312500 -0.187500
v 0.125000 0.687500 -0.187500
v 0.125000 0.687500 0.187500
v 0.125000 0.312500 0.187500
v 0.125000 0.312500 -0.187500
v 0.125000 0.750000 0.250000
v 0.125000 0.250000 0.250000
v 0.125000 0.750000 -0.250000
v 0.125000 0.250000 -0.250000
v -0.125000 0.750000 -0.250000
v -0.125000 0.750000 0.250000
v -0.125000 0.250000 0.250000
v -0.125000 0.250000 -0.250000
v -0.125000 0.687500 0.187500
v -0.125000 0.312500 0.187500
v -0.125000 0.687500 -0.187500
v -0.125000 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.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.125000 0.875000 -0.125000
v -0.125000 0.875000 0.125000
v 0.125000 0.875000 0.125000
v 0.125000 0.875000 -0.125000
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.125000 0.812500 -0.125000
v -0.125000 0.812500 0.125000
v 0.125000 0.812500 0.125000
v 0.125000 0.812500 -0.125000
vt 0.487805 0.600000
vt 0.512195 0.425000
vt 0.512195 0.575000
vt 0.951219 0.400000
vt 0.658537 0.700000
vt 0.658537 0.400000
vt 0.658537 0.050000
vt 0.951219 0.350000
vt 0.658537 0.350000
vt 1.000000 0.350000
vt 0.951219 0.050000
vt 1.000000 0.050000
vt 0.609756 0.050000
vt 0.609756 0.350000
vt 0.951219 -0.000000
vt 0.658537 0.000000
vt 0.000000 0.600000
vt 0.195122 0.400000
vt 0.195122 0.600000
vt 0.512195 0.775000
vt 0.512195 0.625000
vt 0.195122 -0.000000
vt 0.243902 0.200000
vt 0.195122 0.200000
vt 0.243902 0.600000
vt 0.243902 0.400000
vt 0.243902 0.800000
vt 0.195122 0.800000
vt 0.512195 0.175000
vt 0.487805 -0.000000
vt 0.512195 0.025000
vt 0.487805 0.400000
vt 0.512195 0.225000
vt 0.512195 0.375000
vt 0.365854 0.625000
vt 0.268293 0.775000
vt 0.268293 0.625000
vt 0.365854 0.025000
vt 0.268293 0.175000
vt 0.268293 0.025000
vt 0.365854 0.425000
vt 0.268293 0.575000
vt 0.268293 0.425000
vt 0.365854 0.225000
vt 0.268293 0.375000
vt 0.268293 0.225000
vt 0.390244 -0.000000
vt 0.487805 0.200000
vt 0.390244 0.200000
vt 0.390244 0.400000
vt 0.390244 0.600000
vt 0.487805 0.800000
vt 0.390244 0.800000
vt 0.609756 0.625000
vt 0.609756 0.025000
vt 0.609756 0.425000
vt 0.609756 0.225000
vt 0.024390 0.750000
vt 0.121951 0.725000
vt 0.121951 0.750000
vt 0.829268 0.700000
vt 0.682927 0.775000
vt 0.682927 0.700000
vt 0.682927 1.000000
vt 0.829268 0.925000
vt 0.829268 1.000000
vt 0.609756 0.775000
vt 0.682927 0.925000
vt 0.609756 0.925000
vt 0.902439 0.925000
vt 0.829268 0.775000
vt 0.902439 0.775000
vt 0.804878 0.800000
vt 0.804878 0.900000
vt 0.707317 0.900000
vt 0.707317 0.800000
vt 0.024390 0.725000
vt 0.121951 0.625000
vt 0.000000 0.625000
vt 0.000000 0.725000
vt 0.146341 0.725000
vt 0.146341 0.625000
vt 0.121951 0.600000
vt 0.024390 0.625000
vt 0.024390 0.600000
vt 0.365854 0.375000
vt 0.365854 0.575000
vt 0.365854 0.775000
vt 0.365854 0.175000
vt 0.951219 0.700000
vt -0.000000 0.400000
vt 0.243902 0.000000
vt 0.609756 0.775000
vt 0.609756 0.175000
vt 0.609756 0.575000
vt 0.609756 0.375000
vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 62/43/14 67/44/14 65/45/14
f 35/46/14 34/47/14 33/48/14
f 39/49/15 37/50/15 38/51/15
f 35/52/16 40/53/16 36/54/16
f 34/55/17 38/51/17 33/56/17
f 36/57/18 39/49/18 34/58/18
f 33/48/19 37/50/19 35/46/19
f 42/59/15 43/60/15 41/61/15
f 66/62/14 62/43/14 65/63/14
f 42/64/18 48/65/18 44/66/18
f 43/60/19 46/67/19 41/61/19
f 44/66/16 45/68/16 43/60/16
f 41/61/17 47/69/17 42/70/17
f 68/71/14 63/72/14 66/73/14
f 61/74/14 68/75/14 67/76/14
f 54/77/17 50/78/17 49/79/17
f 55/80/18 52/81/18 50/82/18
f 53/83/19 49/84/19 51/85/19
f 56/86/16 51/87/16 52/88/16
f 58/89/18 64/90/18 60/91/18
f 59/92/19 62/43/19 57/93/19
f 60/91/16 61/74/16 59/92/16
f 57/93/17 63/94/17 58/95/17
f 70/96/17 66/62/17 65/63/17
f 71/97/18 68/71/18 66/73/18
f 69/98/19 65/45/19 67/44/19
f 72/99/16 67/76/16 68/75/16
f 79/100/16 86/101/16 78/102/16
f 75/103/16 84/104/16 76/105/16
f 74/106/17 82/107/17 73/108/17
f 76/109/15 83/110/15 74/111/15
f 73/112/14 81/113/14 75/114/14
f 77/115/19 82/107/19 78/116/19
f 78/116/19 83/110/19 79/117/19
f 79/117/19 84/104/19 80/118/19
f 80/118/19 81/113/19 77/115/19
f 87/119/19 85/120/19 86/101/19
f 80/121/14 87/119/14 79/122/14
f 78/123/15 85/120/15 77/124/15
f 77/125/17 88/126/17 80/127/17
f 56/86/15 59/92/15 53/128/15
f 53/83/15 57/93/15 54/129/15
f 54/77/15 58/95/15 55/130/15
f 55/80/15 60/91/15 56/131/15
f 48/65/14 51/87/14 45/68/14
f 46/67/14 51/85/14 49/84/14
f 46/67/14 50/78/14 47/69/14
f 48/65/14 50/82/14 52/81/14
f 62/43/14 61/74/14 67/44/14
f 35/46/14 36/132/14 34/47/14
f 39/49/15 40/53/15 37/50/15
f 35/52/16 37/50/16 40/53/16
f 34/55/17 39/49/17 38/51/17
f 36/57/18 40/53/18 39/49/18
f 33/48/19 38/51/19 37/50/19
f 42/59/15 44/133/15 43/60/15
f 66/62/14 63/94/14 62/43/14
f 42/64/18 47/134/18 48/65/18
f 43/60/19 45/68/19 46/67/19
f 44/66/16 48/65/16 45/68/16
f 41/61/17 46/67/17 47/69/17
f 68/71/14 64/90/14 63/72/14
f 61/74/14 64/90/14 68/75/14
f 54/77/17 55/130/17 50/78/17
f 55/80/18 56/131/18 52/81/18
f 53/83/19 54/129/19 49/84/19
f 56/86/16 53/128/16 51/87/16
f 58/89/18 63/72/18 64/90/18
f 59/92/19 61/74/19 62/43/19
f 60/91/16 64/90/16 61/74/16
f 57/93/17 62/43/17 63/94/17
f 70/96/17 71/135/17 66/62/17
f 71/97/18 72/136/18 68/71/18
f 69/98/19 70/137/19 65/45/19
f 72/99/16 69/138/16 67/76/16
f 79/100/16 87/119/16 86/101/16
f 75/103/16 81/113/16 84/104/16
f 74/106/17 83/110/17 82/107/17
f 76/109/15 84/104/15 83/110/15
f 73/112/14 82/107/14 81/113/14
f 77/115/19 81/113/19 82/107/19
f 78/116/19 82/107/19 83/110/19
f 79/117/19 83/110/19 84/104/19
f 80/118/19 84/104/19 81/113/19
f 87/119/19 88/126/19 85/120/19
f 80/121/14 88/126/14 87/119/14
f 78/123/15 86/101/15 85/120/15
f 77/125/17 85/120/17 88/126/17
f 56/86/15 60/91/15 59/92/15
f 53/83/15 59/92/15 57/93/15
f 54/77/15 57/93/15 58/95/15
f 55/80/15 58/89/15 60/91/15
f 48/65/14 52/88/14 51/87/14
f 46/67/14 45/68/14 51/85/14
f 46/67/14 49/79/14 50/78/14
f 48/65/14 47/134/14 50/82/14

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 B

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 469 B

After

Width:  |  Height:  |  Size: 832 B