Merge branch 'HbmMods:master' into rulang121

This commit is contained in:
Raaaaaaaaaay 2026-06-23 12:41:09 +03:00 committed by GitHub
commit b9c848c83d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 4159 additions and 3229 deletions

View File

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

View File

@ -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;
@ -578,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;
@ -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");
@ -2015,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");
@ -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");
@ -2938,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());
@ -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);

View File

@ -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) {

View File

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

View File

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

View File

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

View File

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

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)));
@ -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)));
@ -542,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))
@ -584,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

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

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

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

View File

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

View File

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

View File

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

View File

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

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

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 39 KiB