Merge pull request #2966 from FluffsADev/cargo-door

Adding Cargo Door
This commit is contained in:
HbmMods 2026-06-23 08:41:05 +02:00 committed by GitHub
commit 4bf3587735
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 558 additions and 22 deletions

View File

@ -579,7 +579,7 @@ public class ModBlocks {
public static Block seal_hatch;
public static Block cargo_elevator;
public static Block vault_door;
public static Block blast_door;
public static Block sliding_blast_door;
@ -596,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;
@ -2018,7 +2019,7 @@ public class ModBlocks {
seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3");
cargo_elevator = new BlockCargoElevator().setBlockName("cargo_elevator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
vault_door = new BlockDoorGeneric(Material.iron, DoorDecl.VAULT_DOOR).setBlockName("vault_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete");
blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door");
@ -2034,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");
@ -2941,7 +2943,7 @@ public class ModBlocks {
//Hooh
GameRegistry.registerBlock(cargo_elevator, cargo_elevator.getUnlocalizedName());
//Vault Door
GameRegistry.registerBlock(vault_door, vault_door.getUnlocalizedName());
GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName());
@ -2963,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);

View File

@ -58,7 +58,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
@Override
public void registerDefaults() {
boolean no528 = !GeneralConfig.enable528;
// plates and ingots
String autoPlate = "autoswitch.plates";
this.register(new GenericRecipe("ass.plateiron").setup(60, 100).outputItems(new ItemStack(ModItems.plate_iron, 1)).inputItems(new OreDictStack(IRON.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this));
@ -74,7 +74,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
this.register(new GenericRecipe("ass.plateweaponsteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_weaponsteel, 1)).inputItems(new OreDictStack(WEAPONSTEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this));
this.register(new GenericRecipe("ass.platesaturnite").setup(60, 100).outputItems(new ItemStack(ModItems.plate_saturnite, 1)).inputItems(new OreDictStack(BIGMT.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this));
this.register(new GenericRecipe("ass.platedura").setup(60, 100).outputItems(new ItemStack(ModItems.plate_dura_steel, 1)).inputItems(new OreDictStack(DURA.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates").setGroup(autoPlate, this));
this.register(new GenericRecipe("ass.platemixed").setup(50, 100).outputItems(new ItemStack(ModItems.plate_mixed, 4))
.inputItems(new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.neutron_reflector, 1), new OreDictStack(BIGMT.plate(), 1)));
this.register(new GenericRecipe("ass.dalekanium").setup(200, 100).outputItems(new ItemStack(ModItems.plate_dalekanium, 1))
@ -118,7 +118,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
.inputItems(new OreDictStack(ASBESTOS.ingot(), 1), new ComparableStack(Items.string, 8)));
this.register(new GenericRecipe("ass.filtercoal").setup(50, 100).outputItems(new ItemStack(ModItems.filter_coal, 1))
.inputItems(new OreDictStack(COAL.dust(), 4), new ComparableStack(Items.string, 2), new ComparableStack(Items.paper, 1)));
// crafting parts
if(!GeneralConfig.enable528) { // precass otherwise
this.register(new GenericRecipe("ass.chip").setup(50, 250).outputItems(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP))
@ -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)));
@ -545,7 +546,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
this.register(new GenericRecipe("ass.pwrneutronsource").setup(200, 500).outputItems(new ItemStack(ModBlocks.pwr_neutron_source, 1))
.inputItems(new OreDictStack(ZR.plateWelded(), 1), new ComparableStack(ModItems.billet_ra226be, 3))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 1, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ZR.plateWelded(), 1), new ComparableStack(ModItems.billet_ra226be, 3)));
// fusion reactor
this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_torus_core, 1))
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BISMOID))
@ -587,7 +588,7 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BSCCO.wireDense(), 32), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID))
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.FERRO_PLATING), new ComparableStack(ModItems.item_expensive, 16, EnumExpensiveType.PLASTIC), new OreDictStack(BSCCO.wireDense(), 32), new ComparableStack(ModItems.item_expensive, 4, EnumExpensiveType.COMPUTER))
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chlorophyte"));
// watz
this.register(new GenericRecipe("ass.watzrod").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_element, 3))
.inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4))

View File

@ -362,13 +362,15 @@ 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");
public static IModelCustomNamed silo_hatch = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/silo_hatch.obj")).asVBO();
public static final ResourceLocation silo_hatch_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/silo_hatch_large.png");
public static IModelCustomNamed silo_hatch_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/silo_hatch_large.obj")).asVBO();
//Vending Machine
public static final IModelCustom vending_machine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/vending_machine.obj")).noSmooth().asVBO();
@ -782,7 +784,7 @@ public class ResourceManager {
//Elevator
public static final ResourceLocation cargo_elevator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/elevator.png");
//Vault Door
public static final ResourceLocation vault_cog_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault_cog.png");
public static final ResourceLocation vault_frame_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault_frame.png");
@ -857,7 +859,7 @@ public class ResourceManager {
//Pipes
public static final ResourceLocation pipe_anchor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pipe_anchor.png");
public static final ResourceLocation fluid_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/fluid_diode.png");
//Barrels
public static ResourceLocation barrel_plastic_tex = new ResourceLocation(RefStrings.MODID, "textures/blocks/barrel_plastic.png");
public static ResourceLocation barrel_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/blocks/barrel_steel.png");

View File

@ -33,7 +33,7 @@ public class ItemRenderLibraryDoors {
ResourceLocation doorTex = ResourceManager.pheo_vault_door_3;
ResourceLocation labelTex = ResourceManager.pheo_label_101;
switch(index) {
case 1: labelTex = ResourceManager.pheo_label_87; break;
case 2: labelTex = ResourceManager.pheo_label_106; break;
@ -42,14 +42,14 @@ public class ItemRenderLibraryDoors {
case 5: doorTex = ResourceManager.pheo_vault_door_s; labelTex = ResourceManager.pheo_label_2; break;
case 6: doorTex = ResourceManager.pheo_vault_door_s; labelTex = ResourceManager.pheo_label_99; break;
}
bindTexture(doorTex);
ResourceManager.pheo_vault_door.renderPart("Door");
bindTexture(labelTex);
ResourceManager.pheo_vault_door.renderPart("Label");
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.secure_access_door), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -3.75, 0);
@ -63,7 +63,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.fire_door), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -3, 0);
@ -77,7 +77,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.sliding_blast_door), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -2.75, 0);
@ -104,7 +104,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.water_door), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -4, 0);
@ -118,7 +118,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.silo_hatch), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -2, 0);
@ -137,7 +137,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.silo_hatch_large), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -2, 0);
@ -157,7 +157,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.qe_containment), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -3.5, 0);
@ -170,7 +170,7 @@ public class ItemRenderLibraryDoors {
GL11.glShadeModel(GL11.GL_FLAT);
}
});
ItemRenderLibrary.renderers.put(Item.getItemFromBlock(ModBlocks.qe_sliding_door), new ItemRenderBase(){
public void renderInventory() {
GL11.glTranslated(0, -3, 0);
@ -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) {

View File

@ -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();
}
}

View File

@ -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,

View File

@ -5207,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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB