Merge branch 'HbmMods:master' into rulang121
@ -20,6 +20,11 @@
|
||||
* Base steam production per consumed heat has been increased by 50% on the ZIRNOX
|
||||
* Both radioisotope cell variants have been finally removed after being deprecated for a while
|
||||
* Selfchargers now have a tooltip explaining the hazards of using them in a battery socket
|
||||
* The alternate recipe for the assembler in the assembler now uses integrated circuits instead of analog ones
|
||||
* Added an alternate chemical plant recipe that uses a smaller selection of items and ICs instead of ACs
|
||||
* Flashgold and flashlead are now made in the PUREX instead of the crafting table
|
||||
* The flashgold recipe now yields two billets instead of one
|
||||
* Slightly changed the HSS ingot texture to not look identical to steel except slightly greenish
|
||||
|
||||
## Fixed
|
||||
* Fixed AUTOCAL's number comparison functions not working with variable substitution as advertised
|
||||
|
||||
@ -14,6 +14,7 @@ import com.hbm.blocks.machine.rbmk.*;
|
||||
import com.hbm.blocks.network.*;
|
||||
import com.hbm.blocks.network.pneumatic.PneumoStorageAccess;
|
||||
import com.hbm.blocks.network.pneumatic.PneumoStorageClutter;
|
||||
import com.hbm.blocks.network.pneumatic.PneumoStorageImporter;
|
||||
import com.hbm.blocks.network.pneumatic.PneumoStorageMono;
|
||||
import com.hbm.blocks.network.pneumatic.PneumoTube;
|
||||
import com.hbm.blocks.network.pneumatic.PneumoTubePaintableBlock;
|
||||
@ -595,6 +596,7 @@ public class ModBlocks {
|
||||
public static Block round_airlock_door;
|
||||
public static Block sliding_seal_door;
|
||||
public static Block water_door;
|
||||
public static Block cargo_door;
|
||||
|
||||
public static Block door_metal;
|
||||
public static Block door_office;
|
||||
@ -807,6 +809,7 @@ public class ModBlocks {
|
||||
public static Block pneumatic_storage_access;
|
||||
public static Block pneumatic_storage_clutter;
|
||||
public static Block pneumatic_storage_mono;
|
||||
public static Block pneumatic_storage_importer;
|
||||
|
||||
public static Block fan;
|
||||
public static Block piston_inserter;
|
||||
@ -1911,6 +1914,7 @@ public class ModBlocks {
|
||||
pneumatic_storage_access = new PneumoStorageAccess().setBlockName("pneumatic_storage_access").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_access");
|
||||
pneumatic_storage_clutter = new PneumoStorageClutter().setBlockName("pneumatic_storage_clutter").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_clutter");
|
||||
pneumatic_storage_mono = new PneumoStorageMono().setBlockName("pneumatic_storage_mono").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_mono");
|
||||
pneumatic_storage_importer = new PneumoStorageImporter().setBlockName("pneumatic_storage_importer").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pneumatic_storage_importer");
|
||||
|
||||
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");
|
||||
|
||||
@ -2031,6 +2035,7 @@ public class ModBlocks {
|
||||
round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(5.0F).setResistance(50.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
cargo_door = new BlockDoorGeneric(Material.iron, DoorDecl.CARGO_DOOR).setBlockName("cargo_door").setHardness(5.0F).setResistance(50.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
|
||||
door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal");
|
||||
door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office");
|
||||
@ -2960,6 +2965,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(round_airlock_door, round_airlock_door.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(sliding_seal_door, sliding_seal_door.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(water_door, water_door.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(cargo_door, cargo_door.getUnlocalizedName());
|
||||
|
||||
//Crates
|
||||
register(crate_iron, ItemBlockStorageCrate.class);
|
||||
@ -3176,6 +3182,7 @@ public class ModBlocks {
|
||||
register(pneumatic_storage_access);
|
||||
register(pneumatic_storage_clutter);
|
||||
register(pneumatic_storage_mono);
|
||||
register(pneumatic_storage_importer);
|
||||
register(fan);
|
||||
register(piston_inserter);
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
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.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -44,6 +45,11 @@ public class PneumoStorageClutter extends BlockContainer {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int i, Random rand, int j) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
|
||||
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package com.hbm.blocks.network.pneumatic;
|
||||
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageImporter;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class PneumoStorageImporter extends BlockContainer {
|
||||
|
||||
public PneumoStorageImporter() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityPneumoStorageImporter();
|
||||
}
|
||||
|
||||
@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;
|
||||
if(!player.isSneaking()) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -230,9 +230,6 @@ public class MineralRecipes {
|
||||
addBilletToIngot(ModItems.ingot_hes, ModItems.billet_hes);
|
||||
addBilletToIngot(ModItems.ingot_australium, ModItems.billet_australium);*/
|
||||
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_balefire_gold, 1), new Object[] { ModItems.billet_au198, ModItems.cell_antimatter, ModItems.pellet_charged });
|
||||
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_flashlead, 2), new Object[] { ModItems.billet_balefire_gold, ModItems.billet_pb209, ModItems.cell_antimatter });
|
||||
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238, IRON.plate() }));
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_radium), new Object[] { ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_ra226, IRON.plate() }));
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_weak), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_pu238, IRON.plate() }));
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageImporter;
|
||||
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
|
||||
public class ContainerPneumoStorageImporter extends ContainerBase {
|
||||
|
||||
public ContainerPneumoStorageImporter(InventoryPlayer invPlayer, TileEntityPneumoStorageImporter importer) {
|
||||
super(invPlayer, importer);
|
||||
|
||||
addSlots(importer, 0, 62, 17, 3, 3);
|
||||
playerInv(invPlayer, 103);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerPneumoStorageImporter;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.network.pneumatic.TileEntityPneumoStorageImporter;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIPneumoStorageImporter extends GuiContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_pneumatic_importer.png");
|
||||
private TileEntityPneumoStorageImporter importer;
|
||||
|
||||
public GUIPneumoStorageImporter(InventoryPlayer invPlayer, TileEntityPneumoStorageImporter importer) {
|
||||
super(new ContainerPneumoStorageImporter(invPlayer, importer));
|
||||
this.importer = importer;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 186;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.importer.hasCustomInventoryName() ? this.importer.getInventoryName() : I18n.format(this.importer.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 5, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
@ -218,7 +218,8 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 4)));
|
||||
this.register(new GenericRecipe("ass.silohatchlarge").setup(300, 100).outputItems(new ItemStack(ModBlocks.silo_hatch_large, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 8)));
|
||||
|
||||
this.register(new GenericRecipe("ass.cargodoor").setup(200, 100).outputItems(new ItemStack(ModBlocks.cargo_door, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.steel_beam, 32), new OreDictStack(STEEL.plate(), 4), new OreDictStack(DURA.bolt(), 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(KEY_GRAY, 1)));
|
||||
// decoration
|
||||
this.register(new GenericRecipe("ass.capnuka").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.NUKA))
|
||||
.inputItems(new ComparableStack(ModItems.cap_nuka, 64), new ComparableStack(ModItems.cap_nuka, 64)));
|
||||
@ -238,10 +239,13 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2)));
|
||||
this.register(new GenericRecipe("ass.assembler").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_assembly_machine, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 4), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)));
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 4), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.chemplant").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_plant, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 3, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.chemplantAlt").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_plant, 1))
|
||||
.inputItems(new OreDictStack(DURA.plate(), 8), new OreDictStack(CU.pipe(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 5, EnumExpensiveType.STEEL_PLATING), new OreDictStack(CU.pipe(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.purex").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_purex, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(RUBBER.pipe(), 8), new OreDictStack(PB.plateCast(), 4), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC))
|
||||
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.LEAD_PLATING), new OreDictStack(STEEL.shell(), 4), new OreDictStack(RUBBER.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.CIRCUIT)));
|
||||
|
||||
@ -43,9 +43,21 @@ public class PUREXRecipes extends GenericRecipes<PUREXRecipe> {
|
||||
this.register((PUREXRecipe) new PUREXRecipe("purex.uzh").setup(600, 1_000)
|
||||
.inputItems(new ComparableStack(ModItems.billet_uranium_fuel),
|
||||
new OreDictStack(ZR.billet(), 3))
|
||||
.inputFluids(new FluidStack(Fluids.NITRIC_ACID, 1000), new FluidStack(Fluids.HYDROGEN, 4000))
|
||||
.inputFluids(new FluidStack(Fluids.NITRIC_ACID, 1_000), new FluidStack(Fluids.HYDROGEN, 4000))
|
||||
.outputItems(new ItemStack(ModItems.billet_uzh, 4)));
|
||||
|
||||
this.register((PUREXRecipe) new PUREXRecipe("purex.flashgold").setup(600, 1_000)
|
||||
.inputItems(new OreDictStack(AU198.billet()),
|
||||
new ComparableStack(ModItems.pellet_charged))
|
||||
.inputFluids(new FluidStack(Fluids.AMAT, 1_000))
|
||||
.outputItems(new ItemStack(ModItems.billet_balefire_gold, 2)));
|
||||
|
||||
this.register((PUREXRecipe) new PUREXRecipe("purex.flashlead").setup(600, 1_000)
|
||||
.inputItems(new OreDictStack(PB209.billet()),
|
||||
new ComparableStack(ModItems.billet_balefire_gold))
|
||||
.inputFluids(new FluidStack(Fluids.AMAT, 1_000))
|
||||
.outputItems(new ItemStack(ModItems.billet_flashlead, 1)));
|
||||
|
||||
//CP-1
|
||||
String autoPile = "autoswitch.pile";
|
||||
this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this)
|
||||
|
||||
@ -362,6 +362,8 @@ public class ResourceManager {
|
||||
public static final ResourceLocation pheo_label_106 = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vault/label_106.png");
|
||||
public static final ResourceLocation pheo_label_111 = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vault/label_111.png");
|
||||
public static IModelCustomNamed pheo_vault_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/vault_door.obj")).asVBO();
|
||||
public static IModelCustomNamed pheo_cargo_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/cargo_door.obj")).asVBO();
|
||||
public static final ResourceLocation pheo_cargo_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/cargo_door.png");
|
||||
|
||||
//Doors
|
||||
public static final ResourceLocation silo_hatch_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/silo_hatch.png");
|
||||
|
||||
@ -221,6 +221,22 @@ public class ItemRenderLibraryDoors {
|
||||
bindTexture(ResourceManager.blast_door_slider_tex); ResourceManager.blast_door_slider.renderAll();
|
||||
bindTexture(ResourceManager.blast_door_block_tex); ResourceManager.blast_door_block.renderAll();
|
||||
}});
|
||||
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.cargo_door), new ItemRenderBase(){
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, -4, 0);
|
||||
GL11.glScaled(4, 4, 4);
|
||||
}
|
||||
public void renderCommon() {
|
||||
bindTexture(ResourceManager.pheo_cargo_door_tex);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
GL11.glScaled(0.9, 0.9, 0.9);
|
||||
GL11.glTranslated(0, 0.3, 0);
|
||||
ResourceManager.pheo_cargo_door.renderPart("Frame");
|
||||
ResourceManager.pheo_cargo_door.renderPart("DoorTop");
|
||||
ResourceManager.pheo_cargo_door.renderPart("DoorBot");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void bindTexture(ResourceLocation res) {
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
package com.hbm.render.tileentity.door;
|
||||
|
||||
import java.nio.DoubleBuffer;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.DoorDecl;
|
||||
import com.hbm.tileentity.TileEntityDoorGeneric;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.MathHelper;
|
||||
|
||||
public class RenderCargoDoor implements IRenderDoors {
|
||||
|
||||
public static final RenderCargoDoor INSTANCE = new RenderCargoDoor();
|
||||
|
||||
@Override
|
||||
public void render(TileEntityDoorGeneric door, DoubleBuffer buf) {
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.CARGO_DOOR.getSkinFromIndex(door.getSkinIndex()));
|
||||
|
||||
double botMove = 0;
|
||||
double topMove = 0;
|
||||
|
||||
if (door.state == door.STATE_OPEN) {
|
||||
botMove = 2.0;
|
||||
topMove = 1.0;
|
||||
}
|
||||
|
||||
if (door.currentAnimation != null) {
|
||||
double botProgress = MathHelper.clamp_double(IRenderDoors.getRelevantTransformation("BOT", door.currentAnimation)[1], 0, 1);
|
||||
double topProgress = MathHelper.clamp_double(IRenderDoors.getRelevantTransformation("TOP", door.currentAnimation)[1], 0, 1);
|
||||
botMove = botProgress * 2.0;
|
||||
topMove = topProgress * 1.0;
|
||||
}
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0, 0);
|
||||
|
||||
ResourceManager.pheo_cargo_door.renderPart("Frame");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, topMove, 0);
|
||||
ResourceManager.pheo_cargo_door.renderPart("DoorTop");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, botMove, 0);
|
||||
ResourceManager.pheo_cargo_door.renderPart("DoorBot");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
@ -641,6 +641,56 @@ public abstract class DoorDecl {
|
||||
|
||||
};
|
||||
|
||||
public static final DoorDecl CARGO_DOOR = new DoorDecl() {
|
||||
|
||||
@Override public String getCloseSoundLoop() { return "hbm:door.garage_move"; }
|
||||
@Override public String getCloseSoundEnd() { return "hbm:door.garage_stop"; }
|
||||
@Override public String getOpenSoundEnd() { return "hbm:door.garage_stop"; }
|
||||
@Override public String getOpenSoundLoop() { return "hbm:door.garage_move"; }
|
||||
@Override public float getSoundVolume() { return 2; }
|
||||
|
||||
@Override
|
||||
public IRenderDoors getSEDNARenderer() {
|
||||
return RenderCargoDoor.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusAnimation getBusAnimation(byte state, byte skinIndex) {
|
||||
int half = this.timeToOpen() * 25;
|
||||
if(state == TileEntityDoorGeneric.STATE_OPENING) return new BusAnimation()
|
||||
.addBus("BOT", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 1, 0, half * 2))
|
||||
.addBus("TOP", new BusAnimationSequence().setPos(0, 0, 0).addPos(0, 0, 0, half).addPos(0, 1, 0, half));
|
||||
if(state == TileEntityDoorGeneric.STATE_CLOSING) return new BusAnimation()
|
||||
.addBus("BOT", new BusAnimationSequence().setPos(0, 1, 0).addPos(0, 0, 0, half * 2))
|
||||
.addBus("TOP", new BusAnimationSequence().setPos(0, 1, 0).addPos(0, 1, 0, half).addPos(0, 0, 0, half));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public int timeToOpen() { return 120; }
|
||||
|
||||
@Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, -1, 0, 3, 3, 1 } }; }
|
||||
@Override public int[] getDimensions() { return new int[] { 2, 0, 0, 0, 1, 1 }; }
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open) return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, 1, 0.625);
|
||||
if(y > 1) return AxisAlignedBB.getBoundingBox(0, 0.25, 0.375, 1, 1, 0.625);
|
||||
else if(y == 0) return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, forCollision ? 0 : 0.125, 0.625);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
}
|
||||
|
||||
public ResourceLocation[] skins;
|
||||
|
||||
@Override
|
||||
public ResourceLocation[] getSEDNASkins() {
|
||||
if(skins == null) skins = new ResourceLocation[] {
|
||||
ResourceManager.pheo_cargo_door_tex
|
||||
};
|
||||
return skins;
|
||||
}
|
||||
|
||||
@Override public int getSkinCount() { return 1; }
|
||||
};
|
||||
// TODO: bash drillgon to death for making this method like that, and for fucking up the documentation, like genuinely what the fuck is this
|
||||
/** Format: x, y, z, tangent amount 1 (how long the door would be if it moved
|
||||
up), tangent amount 2 (door places blocks in this direction), axis (0-x,
|
||||
|
||||
@ -14,7 +14,6 @@ import api.hbm.ntl.StackCache;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityPneumoStorageAccess extends TileEntityLoadedBase implements IPneumaticConnector, IGUIProvider {
|
||||
|
||||
@ -69,12 +68,6 @@ public class TileEntityPneumoStorageAccess extends TileEntityLoadedBase implemen
|
||||
if(this.cache != null) this.cache.dissolveCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectPneumatic(ForgeDirection dir) {
|
||||
ForgeDirection selfdir = ForgeDirection.getOrientation(getBlockMetadata());
|
||||
return dir == selfdir.getOpposite();
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerPneumoStorageAccess(player.inventory, this); }
|
||||
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPneumoStorageAccess(player.inventory, this); }
|
||||
}
|
||||
|
||||
@ -0,0 +1,112 @@
|
||||
package com.hbm.tileentity.network.pneumatic;
|
||||
|
||||
import com.hbm.inventory.container.ContainerPneumoStorageImporter;
|
||||
import com.hbm.inventory.gui.GUIPneumoStorageImporter;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.tileentity.network.pneumatic.TileEntityPneumoTube.PneumaticNode;
|
||||
import com.hbm.uninos.UniNodespace;
|
||||
import com.hbm.uninos.networkproviders.PneumaticNetworkProvider;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import api.hbm.ntl.IPneumaticConnector;
|
||||
import api.hbm.ntl.StackCache;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityPneumoStorageImporter extends TileEntityMachineBase implements IPneumaticConnector, IGUIProvider {
|
||||
|
||||
protected PneumaticNode node;
|
||||
public StackCache cache;
|
||||
|
||||
public int[] delay = new int[9];
|
||||
public int[] SLOT_ACCESS = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
|
||||
|
||||
public TileEntityPneumoStorageImporter() {
|
||||
super(9);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "container.pneumoStorageImporter";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInventorySlotContents(int i, ItemStack stack) {
|
||||
super.setInventorySlotContents(i, stack);
|
||||
|
||||
if(stack != null) this.delay[i] = Math.max(this.delay[i], 1);
|
||||
}
|
||||
|
||||
@Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; }
|
||||
@Override public int[] getAccessibleSlotsFromSide(int side) { return SLOT_ACCESS; }
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
if(this.node == null || this.node.expired) {
|
||||
if(this.cache != null) this.cache.dissolveCache();
|
||||
|
||||
this.node = (PneumaticNode) UniNodespace.getNode(worldObj, xCoord, yCoord, zCoord, PneumaticNetworkProvider.THE_PROVIDER);
|
||||
|
||||
if(this.node == null || this.node.expired) {
|
||||
this.node = (PneumaticNode) new PneumaticNode(new BlockPos(xCoord, yCoord, zCoord)).setStandardConnections(xCoord, yCoord, zCoord);
|
||||
UniNodespace.createNode(worldObj, this.node);
|
||||
}
|
||||
}
|
||||
|
||||
if(this.cache == null || this.cache.hasExpired) {
|
||||
this.cache = new StackCache(xCoord, yCoord, zCoord);
|
||||
}
|
||||
|
||||
if(this.node != null && this.node.hasValidNet()) {
|
||||
this.node.net.addStackCache(cache);
|
||||
}
|
||||
|
||||
if(this.cache != null && !this.cache.hasExpired) for(int i = 0; i < 9; i++) {
|
||||
if(this.delay[i] > 0) {
|
||||
this.delay[i]--;
|
||||
continue;
|
||||
}
|
||||
ItemStack stack = slots[i];
|
||||
if(stack == null) continue;
|
||||
|
||||
int leftover = (int) this.cache.addItemsAndReturnQuantity(stack, stack.stackSize);
|
||||
if(leftover == stack.stackSize) {
|
||||
this.delay[i] = 100;
|
||||
} else {
|
||||
this.decrStackSize(i, stack.stackSize - leftover);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
|
||||
if(!worldObj.isRemote && this.node != null) {
|
||||
UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, PneumaticNetworkProvider.THE_PROVIDER);
|
||||
}
|
||||
|
||||
if(this.cache != null) this.cache.dissolveCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChunkUnload() {
|
||||
super.onChunkUnload();
|
||||
|
||||
if(!worldObj.isRemote && this.node != null) {
|
||||
UniNodespace.destroyNode(worldObj, xCoord, yCoord, zCoord, PneumaticNetworkProvider.THE_PROVIDER);
|
||||
}
|
||||
|
||||
if(this.cache != null) this.cache.dissolveCache();
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerPneumoStorageImporter(player.inventory, this); }
|
||||
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPneumoStorageImporter(player.inventory, this); }
|
||||
}
|
||||
@ -134,7 +134,7 @@ public class PneumaticNetwork extends NodeNet {
|
||||
TileEntity tile1 = source instanceof TileEntity ? (TileEntity) source : null;
|
||||
|
||||
int attempts = 0;
|
||||
int maxAttempts = receiverList.size();
|
||||
int maxAttempts = Math.min(receiverList.size(), 5);
|
||||
|
||||
// try all receivers for both modes, in an attempts based system.
|
||||
// instead of bailing out of trying after the first failure (which means you have to wait 0.25 seconds), we just try the next one.
|
||||
|
||||
@ -359,6 +359,8 @@ container.paSource=Teilchenquelle
|
||||
container.plasmaHeater=Plasmaerhitzer
|
||||
container.pneumoStorageAccess=PLS Zugangsterminal
|
||||
container.pneumoStorageClutter=PLS Gerümpelkiste
|
||||
container.pneumoStorageImporter=PSN Importer
|
||||
container.pneumoStorageMono=PLS Massenspeicher
|
||||
container.pneumoTube=Rohrpost
|
||||
container.press=Befeuerte Presse
|
||||
container.puf6_tank=PuF6 Tank
|
||||
@ -4740,6 +4742,8 @@ tile.plasma_heater.name=Plasmaerhitzer
|
||||
tile.plushie.name=%s Plüschfigur
|
||||
tile.pneumatic_storage_access.name=Pneumatisches Lagersystem - Zugangsterminal
|
||||
tile.pneumatic_storage_clutter.name=Pneumatisches Lagersystem - Gerümpelkiste
|
||||
tile.pneumatic_storage_importer.name=Pneumatisches Lagersystem - Importer
|
||||
tile.pneumatic_storage_mono.name=Pneumatisches Lagersystem - Massenspeicher
|
||||
tile.pneumatic_tube.name=Rohrpost
|
||||
tile.pneumatic_tube.desc=Sendted Items mit Druckluft.$Rechtsklick mit Schraubenzieher aktiviert den Eingang.$Shift-Rechtskick mit Schrabuenzieher aktiviert den Ausgang.$Eingänge können konfiguriert und mit Druckluft verbunden werden.$Sendet bis zu einem Stack, vier Mal pro Sekunde.
|
||||
tile.pneumatic_tube_paintable.name=Geschirmte Rohrpost (Färbbar)
|
||||
|
||||
@ -761,6 +761,8 @@ container.paSource=Particle Source
|
||||
container.plasmaHeater=Plasma Heater
|
||||
container.pneumoStorageAccess=PSN Access Terminal
|
||||
container.pneumoStorageClutter=PSN Clutter Storage
|
||||
container.pneumoStorageImporter=PSN Importer
|
||||
container.pneumoStorageMono=PSN Bulk Storage
|
||||
container.pneumoTube=Pneumatic Tube
|
||||
container.press=Burner Press
|
||||
container.puf6_tank=PuF6 Tank
|
||||
@ -5205,6 +5207,7 @@ tile.capacitor_niobium.name=Niobium Capacitor (LEGACY)
|
||||
tile.capacitor_schrabidate.name=Schrabidate Capacitor (LEGACY)
|
||||
tile.capacitor_tantalium.name=Tantalum Capacitor (LEGACY)
|
||||
tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus
|
||||
tile.cargo_door.name=Cargo Door
|
||||
tile.cargo_elevator.name=Cargo Elevator
|
||||
tile.charge_c4.name=Demolition Charge
|
||||
tile.charge_dynamite.name=Time Bomb
|
||||
@ -6000,6 +6003,8 @@ tile.plasma_heater.name=Plasma Heater
|
||||
tile.plushie.name=%s Plushie
|
||||
tile.pneumatic_storage_access.name=Pneumatic Storage Network - Access Terminal
|
||||
tile.pneumatic_storage_clutter.name=Pneumatic Storage Network - Clutter Storage
|
||||
tile.pneumatic_storage_importer.name=Pneumatic Storage Network - Importer
|
||||
tile.pneumatic_storage_mono.name=Pneumatic Storage Network - Bulk Storage
|
||||
tile.pneumatic_tube.name=Pneumatic Tube
|
||||
tile.pneumatic_tube.desc=Sends items using compressed air.$Right-click with screwdriver to toggle an input.$Shift right-click with screwdriver to toggle an output.$Inputs can be configured, and connected to compressed air.$Sends up to one stack, four times per second.
|
||||
tile.pneumatic_tube_paintable.name=Paintable Pneumatic Tube
|
||||
|
||||
408
src/main/resources/assets/hbm/models/pheodoors/cargo_door.obj
Normal file
@ -0,0 +1,408 @@
|
||||
# Blender 5.1.2
|
||||
# www.blender.org
|
||||
|
||||
# Made By TheVitya2127
|
||||
|
||||
o DoorBot
|
||||
v 0.125000 1.562500 1.500000
|
||||
v 0.125000 1.562500 1.375000
|
||||
v 0.125000 0.062500 1.500000
|
||||
v 0.125000 0.062500 1.375000
|
||||
v 0.000000 1.562500 1.500000
|
||||
v 0.000000 1.562500 1.375000
|
||||
v 0.000000 0.062500 1.500000
|
||||
v 0.000000 0.062500 1.375000
|
||||
v 0.125000 1.562500 -1.375000
|
||||
v 0.125000 1.562500 -1.500000
|
||||
v 0.125000 0.062500 -1.375000
|
||||
v 0.125000 0.062500 -1.500000
|
||||
v 0.000000 1.562500 -1.375000
|
||||
v 0.000000 1.562500 -1.500000
|
||||
v 0.000000 0.062500 -1.375000
|
||||
v 0.000000 0.062500 -1.500000
|
||||
v 0.125000 1.562500 1.375000
|
||||
v 0.125000 1.562500 -1.375000
|
||||
v 0.125000 1.437500 1.375000
|
||||
v 0.125000 1.437500 -1.375000
|
||||
v 0.000000 1.562500 1.375000
|
||||
v 0.000000 1.562500 -1.375000
|
||||
v 0.000000 1.437500 1.375000
|
||||
v 0.000000 1.437500 -1.375000
|
||||
v 0.125000 0.187500 1.375000
|
||||
v 0.125000 0.187500 -1.375000
|
||||
v 0.125000 0.062500 1.375000
|
||||
v 0.125000 0.062500 -1.375000
|
||||
v 0.000000 0.187500 1.375000
|
||||
v 0.000000 0.187500 -1.375000
|
||||
v 0.000000 0.062500 1.375000
|
||||
v 0.000000 0.062500 -1.375000
|
||||
v 0.062500 0.187500 1.375000
|
||||
v 0.062500 0.187500 -1.375000
|
||||
v 0.062500 1.437500 1.375000
|
||||
v 0.062500 1.437500 -1.375000
|
||||
v 0.062500 0.187500 1.375000
|
||||
v 0.062500 0.187500 -1.375000
|
||||
v 0.062500 1.437500 1.375000
|
||||
v 0.062500 1.437500 -1.375000
|
||||
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
|
||||
vt 0.923077 0.970588
|
||||
vt 0.884615 0.970588
|
||||
vt 0.884615 0.617647
|
||||
vt 0.923077 0.617647
|
||||
vt 0.923077 1.000000
|
||||
vt 0.884615 1.000000
|
||||
vt 0.923077 0.588235
|
||||
vt 0.884615 0.588235
|
||||
vt 0.038462 0.617647
|
||||
vt 0.038462 0.588235
|
||||
vt 0.884615 0.941176
|
||||
vt 0.038462 0.941176
|
||||
vt 0.038462 0.911765
|
||||
vt 0.884615 0.911765
|
||||
vt 0.038462 0.970588
|
||||
s 1
|
||||
usemtl m_ff3b3a90-0979-83d1-ee3c-810de9dcd956
|
||||
f 2/1/1 1/2/1 3/3/1
|
||||
f 2/1/1 3/3/1 4/4/1
|
||||
f 7/4/2 5/1/2 6/2/2
|
||||
f 7/4/2 6/2/2 8/3/2
|
||||
f 5/2/3 1/1/3 2/5/3
|
||||
f 5/2/3 2/5/3 6/6/3
|
||||
f 4/7/4 3/4/4 7/3/4
|
||||
f 4/7/4 7/3/4 8/8/4
|
||||
f 3/4/5 1/1/5 5/2/5
|
||||
f 3/4/5 5/2/5 7/3/5
|
||||
f 6/1/6 2/2/6 4/3/6
|
||||
f 6/1/6 4/3/6 8/4/6
|
||||
f 10/1/1 9/2/1 11/3/1
|
||||
f 10/1/1 11/3/1 12/4/1
|
||||
f 15/4/2 13/1/2 14/2/2
|
||||
f 15/4/2 14/2/2 16/3/2
|
||||
f 13/2/3 9/1/3 10/5/3
|
||||
f 13/2/3 10/5/3 14/6/3
|
||||
f 12/7/4 11/4/4 15/3/4
|
||||
f 12/7/4 15/3/4 16/8/4
|
||||
f 11/4/5 9/1/5 13/2/5
|
||||
f 11/4/5 13/2/5 15/3/5
|
||||
f 14/1/6 10/2/6 12/3/6
|
||||
f 14/1/6 12/3/6 16/4/6
|
||||
f 18/3/1 17/9/1 19/10/1
|
||||
f 18/3/1 19/10/1 20/8/1
|
||||
f 23/8/2 21/3/2 22/9/2
|
||||
f 23/8/2 22/9/2 24/10/2
|
||||
f 21/8/3 17/3/3 18/9/3
|
||||
f 21/8/3 18/9/3 22/10/3
|
||||
f 20/3/4 19/9/4 23/10/4
|
||||
f 20/3/4 23/10/4 24/8/4
|
||||
f 26/11/1 25/12/1 27/13/1
|
||||
f 26/11/1 27/13/1 28/14/1
|
||||
f 31/12/2 29/13/2 30/14/2
|
||||
f 31/12/2 30/14/2 32/11/2
|
||||
f 29/15/3 25/12/3 26/11/3
|
||||
f 29/15/3 26/11/3 30/2/3
|
||||
f 28/2/4 27/15/4 31/12/4
|
||||
f 28/2/4 31/12/4 32/11/4
|
||||
f 36/14/2 34/3/2 33/9/2
|
||||
f 36/14/2 33/9/2 35/13/2
|
||||
f 37/9/1 38/3/1 40/14/1
|
||||
f 37/9/1 40/14/1 39/13/1
|
||||
o DoorTop
|
||||
v 0.000000 2.937500 1.375000
|
||||
v 0.000000 2.937500 -1.375000
|
||||
v 0.000000 2.812500 1.375000
|
||||
v 0.000000 2.812500 -1.375000
|
||||
v -0.125000 2.937500 1.375000
|
||||
v -0.125000 2.937500 -1.375000
|
||||
v -0.125000 2.812500 1.375000
|
||||
v -0.125000 2.812500 -1.375000
|
||||
v 0.000000 1.562500 1.375000
|
||||
v 0.000000 1.562500 -1.375000
|
||||
v 0.000000 1.437500 1.375000
|
||||
v 0.000000 1.437500 -1.375000
|
||||
v -0.125000 1.562500 1.375000
|
||||
v -0.125000 1.562500 -1.375000
|
||||
v -0.125000 1.437500 1.375000
|
||||
v -0.125000 1.437500 -1.375000
|
||||
v 0.000000 2.937500 1.500000
|
||||
v 0.000000 2.937500 1.375000
|
||||
v 0.000000 1.437500 1.500000
|
||||
v 0.000000 1.437500 1.375000
|
||||
v -0.125000 2.937500 1.500000
|
||||
v -0.125000 2.937500 1.375000
|
||||
v -0.125000 1.437500 1.500000
|
||||
v -0.125000 1.437500 1.375000
|
||||
v 0.000000 2.937500 -1.375000
|
||||
v 0.000000 2.937500 -1.500000
|
||||
v 0.000000 1.437500 -1.375000
|
||||
v 0.000000 1.437500 -1.500000
|
||||
v -0.125000 2.937500 -1.375000
|
||||
v -0.125000 2.937500 -1.500000
|
||||
v -0.125000 1.437500 -1.375000
|
||||
v -0.125000 1.437500 -1.500000
|
||||
v -0.062500 1.562500 1.375000
|
||||
v -0.062500 1.562500 -1.375000
|
||||
v -0.062500 2.812500 1.375000
|
||||
v -0.062500 2.812500 -1.375000
|
||||
v -0.062500 1.562500 1.375000
|
||||
v -0.062500 1.562500 -1.375000
|
||||
v -0.062500 2.812500 1.375000
|
||||
v -0.062500 2.812500 -1.375000
|
||||
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
|
||||
vt 0.884615 0.617647
|
||||
vt 0.038462 0.617647
|
||||
vt 0.038462 0.588235
|
||||
vt 0.884615 0.588235
|
||||
vt 0.884615 0.970588
|
||||
vt 0.038462 0.970588
|
||||
vt 0.038462 0.941176
|
||||
vt 0.884615 0.941176
|
||||
vt 0.038462 0.911765
|
||||
vt 0.884615 0.911765
|
||||
vt 0.923077 0.970588
|
||||
vt 0.923077 0.617647
|
||||
vt 0.923077 1.000000
|
||||
vt 0.884615 1.000000
|
||||
vt 0.923077 0.588235
|
||||
s 1
|
||||
usemtl m_ff3b3a90-0979-83d1-ee3c-810de9dcd956
|
||||
f 42/16/7 41/17/7 43/18/7
|
||||
f 42/16/7 43/18/7 44/19/7
|
||||
f 47/19/8 45/16/8 46/17/8
|
||||
f 47/19/8 46/17/8 48/18/8
|
||||
f 45/19/9 41/16/9 42/17/9
|
||||
f 45/19/9 42/17/9 46/18/9
|
||||
f 44/16/10 43/17/10 47/18/10
|
||||
f 44/16/10 47/18/10 48/19/10
|
||||
f 50/20/7 49/21/7 51/22/7
|
||||
f 50/20/7 51/22/7 52/23/7
|
||||
f 55/21/8 53/22/8 54/23/8
|
||||
f 55/21/8 54/23/8 56/20/8
|
||||
f 53/22/9 49/24/9 50/25/9
|
||||
f 53/22/9 50/25/9 54/23/9
|
||||
f 52/23/10 51/22/10 55/24/10
|
||||
f 52/23/10 55/24/10 56/25/10
|
||||
f 58/26/7 57/20/7 59/16/7
|
||||
f 58/26/7 59/16/7 60/27/7
|
||||
f 63/27/8 61/26/8 62/20/8
|
||||
f 63/27/8 62/20/8 64/16/8
|
||||
f 61/20/9 57/26/9 58/28/9
|
||||
f 61/20/9 58/28/9 62/29/9
|
||||
f 60/30/10 59/27/10 63/16/10
|
||||
f 60/30/10 63/16/10 64/19/10
|
||||
f 59/27/11 57/26/11 61/20/11
|
||||
f 59/27/11 61/20/11 63/16/11
|
||||
f 62/26/12 58/20/12 60/16/12
|
||||
f 62/26/12 60/16/12 64/27/12
|
||||
f 66/26/7 65/20/7 67/16/7
|
||||
f 66/26/7 67/16/7 68/27/7
|
||||
f 71/27/8 69/26/8 70/20/8
|
||||
f 71/27/8 70/20/8 72/16/8
|
||||
f 69/20/9 65/26/9 66/28/9
|
||||
f 69/20/9 66/28/9 70/29/9
|
||||
f 68/30/10 67/27/10 71/16/10
|
||||
f 68/30/10 71/16/10 72/19/10
|
||||
f 67/27/11 65/26/11 69/20/11
|
||||
f 67/27/11 69/20/11 71/16/11
|
||||
f 70/26/12 66/20/12 68/16/12
|
||||
f 70/26/12 68/16/12 72/27/12
|
||||
f 76/25/8 74/16/8 73/17/8
|
||||
f 76/25/8 73/17/8 75/24/8
|
||||
f 77/17/7 78/16/7 80/25/7
|
||||
f 77/17/7 80/25/7 79/24/7
|
||||
o Frame
|
||||
v 0.312500 3.000000 -1.437500
|
||||
v 0.312500 3.000000 -1.500000
|
||||
v 0.250000 2.937500 -1.437500
|
||||
v 0.250000 2.937500 -1.500000
|
||||
v 0.125000 3.000000 -1.437500
|
||||
v 0.125000 3.000000 -1.500000
|
||||
v 0.125000 2.937500 -1.437500
|
||||
v 0.125000 2.937500 -1.500000
|
||||
v -0.125000 3.000000 -1.437500
|
||||
v -0.125000 3.000000 -1.500000
|
||||
v -0.125000 2.937500 -1.437500
|
||||
v -0.125000 2.937500 -1.500000
|
||||
v -0.312500 3.000000 -1.437500
|
||||
v -0.312500 3.000000 -1.500000
|
||||
v -0.250000 2.937500 -1.437500
|
||||
v -0.250000 2.937500 -1.500000
|
||||
v 0.312500 3.000000 1.437500
|
||||
v 0.312500 3.000000 -1.437500
|
||||
v 0.250000 2.937500 1.437500
|
||||
v 0.250000 2.937500 -1.437500
|
||||
v -0.312500 3.000000 1.437500
|
||||
v -0.312500 3.000000 -1.437500
|
||||
v -0.250000 2.937500 1.437500
|
||||
v -0.250000 2.937500 -1.437500
|
||||
v 0.312500 3.000000 1.500000
|
||||
v 0.312500 3.000000 1.437500
|
||||
v 0.250000 2.937500 1.500000
|
||||
v 0.250000 2.937500 1.437500
|
||||
v 0.125000 3.000000 1.500000
|
||||
v 0.125000 3.000000 1.437500
|
||||
v 0.125000 2.937500 1.500000
|
||||
v 0.125000 2.937500 1.437500
|
||||
v -0.125000 3.000000 1.500000
|
||||
v -0.125000 3.000000 1.437500
|
||||
v -0.125000 2.937500 1.500000
|
||||
v -0.125000 2.937500 1.437500
|
||||
v -0.312500 3.000000 1.500000
|
||||
v -0.312500 3.000000 1.437500
|
||||
v -0.250000 2.937500 1.500000
|
||||
v -0.250000 2.937500 1.437500
|
||||
v 0.250000 0.062500 1.500000
|
||||
v 0.250000 0.062500 -1.500000
|
||||
v 0.312500 0.000000 1.500000
|
||||
v 0.312500 -0.000000 -1.500000
|
||||
v -0.250000 0.062500 1.500000
|
||||
v -0.250000 0.062500 -1.500000
|
||||
v -0.312500 0.000000 1.500000
|
||||
v -0.312500 -0.000000 -1.500000
|
||||
vn 0.7071 -0.7071 -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.0000 -0.0000 -1.0000
|
||||
vn 1.0000 -0.0000 -0.0000
|
||||
vn -0.7071 -0.7071 -0.0000
|
||||
vn 0.7071 0.7071 -0.0000
|
||||
vn -0.7071 0.7071 -0.0000
|
||||
vt 0.942308 0.279412
|
||||
vt 0.923077 0.279412
|
||||
vt 0.923077 0.264706
|
||||
vt 0.942308 0.264706
|
||||
vt 1.000000 0.264706
|
||||
vt 1.000000 0.279412
|
||||
vt 0.980769 0.279412
|
||||
vt 0.980769 0.264706
|
||||
vt 0.942308 0.250000
|
||||
vt 0.923077 0.235294
|
||||
vt 0.980769 0.235294
|
||||
vt 0.980769 0.250000
|
||||
vt 0.980769 0.294118
|
||||
vt 0.923077 0.294118
|
||||
vt 0.942308 0.220588
|
||||
vt 0.923077 0.220588
|
||||
vt 0.923077 0.205882
|
||||
vt 0.942308 0.205882
|
||||
vt 1.000000 0.205882
|
||||
vt 1.000000 0.220588
|
||||
vt 0.980769 0.220588
|
||||
vt 0.980769 0.205882
|
||||
vt 0.942308 0.191176
|
||||
vt 0.942308 0.176471
|
||||
vt 1.000000 0.176471
|
||||
vt 0.980769 0.191176
|
||||
vt 1.000000 0.235294
|
||||
vt 0.942308 0.235294
|
||||
vt 0.903846 0.147059
|
||||
vt 0.019231 0.147059
|
||||
vt 0.019231 0.132353
|
||||
vt 0.903846 0.132353
|
||||
vt 0.019231 0.014706
|
||||
vt 0.019231 0.000000
|
||||
vt 0.903846 0.000000
|
||||
vt 0.903846 0.014706
|
||||
vt 0.019231 0.294118
|
||||
vt 0.903846 0.294118
|
||||
vt 0.000000 0.161765
|
||||
vt 0.000000 0.279412
|
||||
vt 0.923077 0.161765
|
||||
vt 0.942308 0.455882
|
||||
vt 0.019231 0.455882
|
||||
vt 0.019231 0.441176
|
||||
vt 0.942308 0.441176
|
||||
vt 0.019231 0.588235
|
||||
vt 0.019231 0.573529
|
||||
vt 0.942308 0.573529
|
||||
vt 0.942308 0.588235
|
||||
vt 0.942308 0.294118
|
||||
vt 0.000000 0.426471
|
||||
vt 0.000000 0.308824
|
||||
vt 0.961538 0.308824
|
||||
vt 0.961538 0.426471
|
||||
s 1
|
||||
usemtl m_ff3b3a90-0979-83d1-ee3c-810de9dcd956
|
||||
f 82/31/13 81/32/13 83/33/13
|
||||
f 82/31/13 83/33/13 84/34/13
|
||||
f 87/35/14 85/36/14 86/37/14
|
||||
f 87/35/14 86/37/14 88/38/14
|
||||
f 83/39/15 81/40/15 85/41/15
|
||||
f 83/39/15 85/41/15 87/42/15
|
||||
f 85/43/16 81/44/16 82/32/16
|
||||
f 85/43/16 82/32/16 86/37/16
|
||||
f 84/34/17 83/39/17 87/42/17
|
||||
f 84/34/17 87/42/17 88/38/17
|
||||
f 86/37/18 82/32/18 84/34/18
|
||||
f 86/37/18 84/34/18 88/38/18
|
||||
f 90/45/19 89/46/19 91/47/19
|
||||
f 90/45/19 91/47/19 92/48/19
|
||||
f 95/49/20 93/50/20 94/51/20
|
||||
f 95/49/20 94/51/20 96/52/20
|
||||
f 91/53/15 89/54/15 93/55/15
|
||||
f 91/53/15 93/55/15 95/56/15
|
||||
f 93/57/16 89/58/16 90/45/16
|
||||
f 93/57/16 90/45/16 94/50/16
|
||||
f 92/48/17 91/53/17 95/56/17
|
||||
f 92/48/17 95/56/17 96/52/17
|
||||
f 94/50/18 90/45/18 92/48/18
|
||||
f 94/50/18 92/48/18 96/52/18
|
||||
f 98/59/13 97/60/13 99/61/13
|
||||
f 98/59/13 99/61/13 100/62/13
|
||||
f 103/63/20 101/64/20 102/65/20
|
||||
f 103/63/20 102/65/20 104/66/20
|
||||
f 101/67/16 97/60/16 98/59/16
|
||||
f 101/67/16 98/59/16 102/68/16
|
||||
f 100/62/17 99/61/17 103/63/17
|
||||
f 100/62/17 103/63/17 104/66/17
|
||||
f 99/69/15 97/60/15 101/67/15
|
||||
f 99/69/15 101/67/15 103/70/15
|
||||
f 102/68/18 98/59/18 100/71/18
|
||||
f 102/68/18 100/71/18 104/32/18
|
||||
f 106/31/13 105/32/13 107/33/13
|
||||
f 106/31/13 107/33/13 108/34/13
|
||||
f 111/35/14 109/36/14 110/37/14
|
||||
f 111/35/14 110/37/14 112/38/14
|
||||
f 107/39/15 105/40/15 109/41/15
|
||||
f 107/39/15 109/41/15 111/42/15
|
||||
f 109/43/16 105/44/16 106/32/16
|
||||
f 109/43/16 106/32/16 110/37/16
|
||||
f 108/34/17 107/39/17 111/42/17
|
||||
f 108/34/17 111/42/17 112/38/17
|
||||
f 110/37/18 106/32/18 108/34/18
|
||||
f 110/37/18 108/34/18 112/38/18
|
||||
f 114/45/19 113/46/19 115/47/19
|
||||
f 114/45/19 115/47/19 116/48/19
|
||||
f 119/49/20 117/50/20 118/51/20
|
||||
f 119/49/20 118/51/20 120/52/20
|
||||
f 115/53/15 113/54/15 117/55/15
|
||||
f 115/53/15 117/55/15 119/56/15
|
||||
f 117/57/16 113/58/16 114/45/16
|
||||
f 117/57/16 114/45/16 118/50/16
|
||||
f 116/48/17 115/53/17 119/56/17
|
||||
f 116/48/17 119/56/17 120/52/17
|
||||
f 118/50/18 114/45/18 116/48/18
|
||||
f 118/50/18 116/48/18 120/52/18
|
||||
f 122/72/21 121/73/21 123/74/21
|
||||
f 122/72/21 123/74/21 124/75/21
|
||||
f 127/76/22 125/77/22 126/78/22
|
||||
f 127/76/22 126/78/22 128/79/22
|
||||
f 125/77/16 121/73/16 122/72/16
|
||||
f 125/77/16 122/72/16 126/78/16
|
||||
f 124/75/17 123/74/17 127/67/17
|
||||
f 124/75/17 127/67/17 128/80/17
|
||||
f 123/74/15 121/81/15 125/82/15
|
||||
f 123/74/15 125/82/15 127/67/15
|
||||
f 126/83/18 122/84/18 124/75/18
|
||||
f 126/83/18 124/75/18 128/80/18
|
||||
|
After Width: | Height: | Size: 417 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 279 B After Width: | Height: | Size: 350 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 39 KiB |