funnier minecarts

This commit is contained in:
Bob 2022-05-23 23:15:12 +02:00
parent 625b0c70ab
commit 7e7d062324
16 changed files with 507 additions and 88 deletions

View File

@ -149,8 +149,16 @@ public class ToolRecipes {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_tools), new Object[] { Items.book, Items.gold_nugget, KEY_GREEN });
//Carts
CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.WOOD, EnumMinecart.EMPTY), new Object[] { "P P", "WPW", 'P',KEY_SLAB, 'W', KEY_PLANKS });
CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), new Object[] { "P P", "IPI", 'P', STEEL.plate(), 'I', STEEL.ingot() });
CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.DESTROYER), new Object[] { "S S", "BLB", "SCS", 'S', STEEL.ingot(), 'B', ModItems.blades_steel, 'L', Fluids.LAVA.getDict(1000), 'C', DictFrame.fromOne(ModItems.cart, EnumMinecart.EMPTY) });
CraftingManager.addShapelessAuto(ItemModMinecart.createCartItem(EnumCartBase.PAINTED, EnumMinecart.EMPTY), new Object[] { ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY), KEY_RED });
for(EnumCartBase base : EnumCartBase.values()) {
if(EnumMinecart.DESTROYER.supportsBase(base)) CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(base, EnumMinecart.DESTROYER), new Object[] { "S S", "BLB", "SCS", 'S', STEEL.ingot(), 'B', ModItems.blades_steel, 'L', Fluids.LAVA.getDict(1000), 'C', ItemModMinecart.createCartItem(base, EnumMinecart.EMPTY) });
if(EnumMinecart.POWDER.supportsBase(base)) CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(base, EnumMinecart.POWDER), new Object[] { "PPP", "PCP", "PPP", 'P', Items.gunpowder, 'C', ItemModMinecart.createCartItem(base, EnumMinecart.EMPTY) });
if(EnumMinecart.SEMTEX.supportsBase(base)) CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(base, EnumMinecart.SEMTEX), new Object[] { "S", "C", 'S', ModBlocks.semtex, 'C', ItemModMinecart.createCartItem(base, EnumMinecart.EMPTY) });
}
net.minecraft.item.crafting.CraftingManager.getInstance().addRecipe(DictFrame.fromOne(ModItems.cart, EnumMinecart.CRATE), new Object[] { "C", "S", 'C', ModBlocks.crate_steel, 'S', Items.minecart }).func_92100_c();
//Configged

View File

@ -1,6 +1,7 @@
package com.hbm.entity.cart;
import net.minecraft.entity.item.EntityMinecart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
@ -14,16 +15,16 @@ import net.minecraft.world.World;
* @author hbm
*
*/
public abstract class EntityMinecartContainerBase extends EntityMinecart implements IInventory {
public abstract class EntityMinecartContainerBase extends EntityMinecartNTM implements IInventory {
protected ItemStack[] slots = new ItemStack[this.getSizeInventory()];
public EntityMinecartContainerBase(World p_i1712_1_) {
super(p_i1712_1_);
public EntityMinecartContainerBase(World world) {
super(world);
}
public EntityMinecartContainerBase(World world, double x, double y, double z) {
super(world, x, y, z);
public EntityMinecartContainerBase(World world, double x, double y, double z, EnumCartBase type) {
super(world, x, y, z, type);
}
@Override
@ -102,11 +103,6 @@ public abstract class EntityMinecartContainerBase extends EntityMinecart impleme
public boolean isItemValidForSlot(int slot, ItemStack stack) {
return true;
}
@Override
public int getMinecartType() {
return -1;
}
@Override
protected void writeEntityToNBT(NBTTagCompound nbt) {

View File

@ -21,8 +21,8 @@ public class EntityMinecartCrate extends EntityMinecartContainerBase {
super(world);
}
public EntityMinecartCrate(World world, double x, double y, double z, ItemStack stack) {
super(world, x, y, z);
public EntityMinecartCrate(World world, double x, double y, double z, EnumCartBase type, ItemStack stack) {
super(world, x, y, z, type);
if(stack.hasTagCompound()) {
for(int i = 0; i < getSizeInventory(); i++) {
setInventorySlotContents(i, ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i)));

View File

@ -8,8 +8,12 @@ import com.hbm.items.tool.ItemModMinecart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import com.hbm.items.tool.ItemModMinecart.EnumMinecart;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.render.entity.item.RenderNeoCart;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
@ -25,8 +29,8 @@ public class EntityMinecartDestroyer extends EntityMinecartContainerBase {
super(p_i1712_1_);
}
public EntityMinecartDestroyer(World world, double x, double y, double z) {
super(world, x, y, z);
public EntityMinecartDestroyer(World world, double x, double y, double z, EnumCartBase type) {
super(world, x, y, z, type);
}
@Override
@ -122,19 +126,14 @@ public class EntityMinecartDestroyer extends EntityMinecartContainerBase {
}
@Override
public void killMinecart(DamageSource p_94095_1_) {
this.setDead();
ItemStack itemstack = ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.DESTROYER);
if(this.func_95999_t() != null) {
itemstack.setStackDisplayName(this.func_95999_t());
}
this.entityDropItem(itemstack, 0.0F);
public ItemStack getCartItem() {
return ItemModMinecart.createCartItem(this.getBase(), EnumMinecart.DESTROYER);
}
@Override
public ItemStack getCartItem() {
return ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.DESTROYER);
@SideOnly(Side.CLIENT)
public void renderSpecialContent(RenderNeoCart renderer) {
renderer.bindTexture(ResourceManager.cart_destroyer_tex);
ResourceManager.cart_destroyer.renderAll();
}
}

View File

@ -0,0 +1,89 @@
package com.hbm.entity.cart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import com.hbm.render.entity.item.RenderNeoCart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
public abstract class EntityMinecartNTM extends EntityMinecart {
public static final int cart_base_id = 23;
public EntityMinecartNTM(World p_i1712_1_) {
super(p_i1712_1_);
}
public EntityMinecartNTM(World world, double x, double y, double z, EnumCartBase type) {
super(world, x, y, z);
this.setBase(type);
}
@Override
protected void entityInit() {
super.entityInit();
this.dataWatcher.addObject(cart_base_id, new Integer(0)); //EnumCartBase
}
public void setBase(EnumCartBase type) {
this.dataWatcher.updateObject(cart_base_id, type.ordinal());
}
public EnumCartBase getBase() {
return EnumCartBase.values()[this.dataWatcher.getWatchableObjectInt(cart_base_id)];
}
@Override
public int getMinecartType() {
return -1;
}
@Override
public boolean canBeCollidedWith() {
return true;
}
@Override
public AxisAlignedBB getCollisionBox(Entity entity) {
return entity.boundingBox;
}
@Override
public AxisAlignedBB getBoundingBox() {
return this.boundingBox;
}
@Override
public void killMinecart(DamageSource p_94095_1_) {
this.setDead();
ItemStack itemstack = getCartItem();
if(this.func_95999_t() != null) {
itemstack.setStackDisplayName(this.func_95999_t());
}
this.entityDropItem(itemstack, 0.0F);
}
@Override
protected void writeEntityToNBT(NBTTagCompound nbt) {
super.writeEntityToNBT(nbt);
nbt.setInteger("base", this.dataWatcher.getWatchableObjectInt(cart_base_id));
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbt) {
super.readEntityFromNBT(nbt);
this.dataWatcher.updateObject(23, nbt.getInteger("base"));
}
@SideOnly(Side.CLIENT)
public void renderSpecialContent(RenderNeoCart renderer) { }
}

View File

@ -4,57 +4,21 @@ import com.hbm.items.tool.ItemModMinecart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import com.hbm.items.tool.ItemModMinecart.EnumMinecart;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
public class EntityMinecartOre extends EntityMinecart {
public class EntityMinecartOre extends EntityMinecartNTM {
public EntityMinecartOre(World p_i1712_1_) {
super(p_i1712_1_);
}
public EntityMinecartOre(World world, double x, double y, double z) {
super(world, x, y, z);
}
@Override
public int getMinecartType() {
return -1;
}
@Override
public boolean canBeCollidedWith() {
return true;
}
@Override
public AxisAlignedBB getCollisionBox(Entity entity) {
return entity.boundingBox;
}
@Override
public AxisAlignedBB getBoundingBox() {
return this.boundingBox;
}
@Override
public void killMinecart(DamageSource p_94095_1_) {
this.setDead();
ItemStack itemstack = ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY);
if(this.func_95999_t() != null) {
itemstack.setStackDisplayName(this.func_95999_t());
}
this.entityDropItem(itemstack, 0.0F);
public EntityMinecartOre(World world, double x, double y, double z, EnumCartBase type) {
super(world, x, y, z, type);
}
@Override
public ItemStack getCartItem() {
return ItemModMinecart.createCartItem(EnumCartBase.STEEL, EnumMinecart.EMPTY);
return ItemModMinecart.createCartItem(this.getBase(), EnumMinecart.EMPTY);
}
}

View File

@ -0,0 +1,35 @@
package com.hbm.entity.cart;
import com.hbm.items.tool.ItemModMinecart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import com.hbm.items.tool.ItemModMinecart.EnumMinecart;
import com.hbm.main.ResourceManager;
import com.hbm.render.entity.item.RenderNeoCart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class EntityMinecartPowder extends EntityMinecartNTM {
public EntityMinecartPowder(World world) {
super(world);
}
public EntityMinecartPowder(World world, double x, double y, double z, EnumCartBase type) {
super(world, x, y, z, type);
}
@Override
public ItemStack getCartItem() {
return ItemModMinecart.createCartItem(this.getBase(), EnumMinecart.POWDER);
}
@Override
@SideOnly(Side.CLIENT)
public void renderSpecialContent(RenderNeoCart renderer) {
renderer.bindTexture(ResourceManager.cart_powder_tex);
ResourceManager.cart_powder.renderPart("Powder");
}
}

View File

@ -0,0 +1,37 @@
package com.hbm.entity.cart;
import com.hbm.items.tool.ItemModMinecart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import com.hbm.items.tool.ItemModMinecart.EnumMinecart;
import com.hbm.main.ResourceManager;
import com.hbm.render.entity.item.RenderNeoCart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class EntityMinecartSemtex extends EntityMinecartNTM {
public EntityMinecartSemtex(World world) {
super(world);
}
public EntityMinecartSemtex(World world, double x, double y, double z, EnumCartBase type) {
super(world, x, y, z, type);
}
@Override
public ItemStack getCartItem() {
return ItemModMinecart.createCartItem(this.getBase(), EnumMinecart.SEMTEX);
}
@Override
@SideOnly(Side.CLIENT)
public void renderSpecialContent(RenderNeoCart renderer) {
renderer.bindTexture(ResourceManager.cart_semtex_top);
ResourceManager.cart_powder.renderPart("SemtexTop");
renderer.bindTexture(ResourceManager.cart_semtex_side);
ResourceManager.cart_powder.renderPart("SemtexSide");
}
}

View File

@ -43,10 +43,11 @@ public class ItemModMinecart extends Item {
}
public static enum EnumMinecart {
EMPTY (EnumCartBase.STEEL),
EMPTY (EnumCartBase.WOOD, EnumCartBase.STEEL, EnumCartBase.PAINTED),
CRATE (EnumCartBase.VANILLA),
DESTROYER (EnumCartBase.STEEL),
POWDER (EnumCartBase.WOOD);
DESTROYER (EnumCartBase.STEEL, EnumCartBase.PAINTED),
POWDER (EnumCartBase.WOOD, EnumCartBase.STEEL, EnumCartBase.PAINTED),
SEMTEX (EnumCartBase.WOOD, EnumCartBase.STEEL, EnumCartBase.PAINTED);
public int types;
@ -217,7 +218,7 @@ public class ItemModMinecart extends Item {
if(BlockRailBase.func_150051_a(world.getBlock(x, y, z))) {
if(!world.isRemote) {
EntityMinecart entityminecart = createMinecart(world, x + 0.5D, y + 0.5D, z + 0.5D, stack);
EntityMinecart entityminecart = createMinecart(world, x + fx, y + fy, z + fz, stack);
if(stack.hasDisplayName()) {
entityminecart.setMinecartName(stack.getDisplayName());
@ -235,10 +236,13 @@ public class ItemModMinecart extends Item {
public static EntityMinecart createMinecart(World world, double x, double y, double z, ItemStack stack) {
EnumMinecart type = (EnumMinecart) EnumMinecart.values()[stack.getItemDamage()];
EnumCartBase base = getBaseType(stack);
switch(type) {
case CRATE: return new EntityMinecartCrate(world, x, y, z, stack);
case DESTROYER: return new EntityMinecartDestroyer(world, x, y, z);
case EMPTY: return new EntityMinecartOre(world, x, y, z);
case CRATE: return new EntityMinecartCrate(world, x, y, z, base, stack);
case DESTROYER: return new EntityMinecartDestroyer(world, x, y, z, base);
case EMPTY: return new EntityMinecartOre(world, x, y, z, base);
case POWDER: return new EntityMinecartPowder(world, x, y, z, base);
case SEMTEX: return new EntityMinecartSemtex(world, x, y, z, base);
default: return new EntityMinecartEmpty(world, x, y, z);
}
}

View File

@ -627,8 +627,7 @@ public class ClientProxy extends ServerProxy {
//minecarts
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest());
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart());
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartDestroyer.class, new RenderNeoCart());
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartOre.class, new RenderNeoCart());
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart());
RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus());
//items
RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem());

View File

@ -495,6 +495,8 @@ public class MainRegistry {
EntityRegistry.registerModEntity(EntityMinecartOre.class, "entity_ntm_cart_ore", 172, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityMinecartBogie.class, "entity_ntm_cart_bogie", 173, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityMagnusCartus.class, "entity_ntm_cart_chungoid", 174, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityMinecartPowder.class, "entity_ntm_cart_powder", 175, this, 250, 1, false);
EntityRegistry.registerModEntity(EntityMinecartSemtex.class, "entity_ntm_cart_semtex", 176, this, 250, 1, false);
EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00);
EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd);

View File

@ -916,6 +916,7 @@ public class ResourceManager {
//Carts
public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj"));
public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj"));
public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj"));
////Texture Entities
@ -1184,6 +1185,9 @@ public class ResourceManager {
public static final ResourceLocation cart_blank = new ResourceLocation(RefStrings.MODID, "textures/entity/cart_metal_naked.png");
public static final ResourceLocation cart_wood = new ResourceLocation(RefStrings.MODID, "textures/entity/cart_wood.png");
public static final ResourceLocation cart_destroyer_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/cart_destroyer.png");
public static final ResourceLocation cart_powder_tex = new ResourceLocation(RefStrings.MODID, "textures/blocks/block_gunpowder.png");
public static final ResourceLocation cart_semtex_side = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_side.png");
public static final ResourceLocation cart_semtex_top = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_bottom.png");
//ISBRHs
public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj"));

View File

@ -2,12 +2,11 @@ package com.hbm.render.entity.item;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.cart.EntityMinecartDestroyer;
import com.hbm.entity.cart.EntityMinecartNTM;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec3;
@ -15,11 +14,12 @@ import net.minecraft.util.Vec3;
public class RenderNeoCart extends Render {
@Override
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
this.doRender((EntityMinecart) p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
public void doRender(Entity entity, double x, double y, double z, float rot, float interp) {
this.doRender((EntityMinecartNTM) entity, x, y, z, rot, interp);
}
public void doRender(EntityMinecart cart, double x, double y, double z, float rot, float interp) {
public void doRender(EntityMinecartNTM cart, double x, double y, double z, float rot, float interp) {
GL11.glPushMatrix();
this.bindEntityTexture(cart);
long rand = (long) cart.getEntityId() * 493286711L;
@ -80,17 +80,33 @@ public class RenderNeoCart extends Render {
}
ResourceManager.cart.renderPart("Bucket");
if(cart instanceof EntityMinecartDestroyer) {
bindTexture(ResourceManager.cart_destroyer_tex);
ResourceManager.cart_destroyer.renderAll();
}
cart.renderSpecialContent(this);
GL11.glPopMatrix();
}
@Override
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
return ResourceManager.cart_blank;
protected ResourceLocation getEntityTexture(Entity entity) {
return getEntityTexture((EntityMinecartNTM) entity);
}
protected ResourceLocation getEntityTexture(EntityMinecartNTM entity) {
switch(entity.getBase()) {
case PAINTED: return ResourceManager.cart_metal;
default:
case STEEL: return ResourceManager.cart_blank;
case WOOD: return ResourceManager.cart_wood;
}
}
//"NoT vIsIbLe" how about you kiss my fucking ass
@Override
public void bindEntityTexture(Entity entity) {
this.bindTexture(this.getEntityTexture(entity));
}
@Override
public void bindTexture(ResourceLocation loc) {
this.renderManager.renderEngine.bindTexture(loc);
}
}

View File

@ -0,0 +1,266 @@
# Blender v2.79 (sub 0) OBJ File: 'cart_powder.blend'
# www.blender.org
o Powder
v -0.500000 0.812500 0.562500
v 0.500000 0.812500 0.562500
v -0.500000 0.812500 -0.562500
v 0.500000 0.812500 -0.562500
v -0.250000 0.812500 0.562500
v 0.000000 0.875000 0.562500
v 0.250000 0.875000 0.562500
v 0.250000 0.875000 -0.562500
v 0.000000 0.937500 -0.562500
v -0.250000 0.875000 -0.562500
v -0.500000 0.812500 -0.281250
v -0.500000 0.812500 0.000000
v -0.500000 0.812500 0.281250
v 0.500000 0.812500 0.281250
v 0.500000 0.812500 0.000000
v 0.500000 0.812500 -0.281250
v -0.250000 0.875000 0.281250
v -0.250000 0.937500 0.000000
v -0.250000 0.875000 -0.281250
v 0.000000 0.937500 0.281250
v 0.000000 1.000000 0.000000
v 0.000000 0.937500 -0.281250
v 0.250000 0.875000 0.281250
v 0.250000 0.937500 0.000000
v 0.250000 0.875000 -0.281250
vt 0.250000 0.250000
vt 0.000000 0.250000
vt 0.250000 -0.000000
vt 1.000000 0.250000
vt 0.750000 -0.000000
vt 1.000000 -0.000000
vt 0.750000 0.250000
vt 0.500000 0.250000
vt 0.500000 -0.000000
vt 0.500000 1.000000
vt 0.250000 1.000000
vt 0.250000 0.750000
vt 0.500000 0.750000
vt 0.250000 0.500000
vt 0.500000 0.500000
vt 0.750000 1.000000
vt 0.750000 0.750000
vt 0.750000 0.500000
vt 1.000000 1.000000
vt 1.000000 0.750000
vt 1.000000 0.500000
vt 0.000000 1.000000
vt 0.000000 0.750000
vt 0.000000 0.500000
vt 0.000000 -0.000000
vn 0.2425 0.9701 0.0000
vn -0.2425 0.9701 0.0000
vn 0.0000 1.0000 0.0000
vn 0.2371 0.9484 0.2107
vn 0.2371 0.9484 -0.2107
vn -0.2371 0.9484 0.2107
vn -0.2371 0.9484 -0.2107
vn 0.4386 0.8773 -0.1949
vn -0.4386 0.8773 0.1949
vn -0.4386 0.8773 -0.1949
vn 0.4386 0.8773 0.1949
s off
f 25/1/1 16/2/1 8/3/1
f 11/4/2 10/5/2 3/6/2
f 19/7/2 22/8/2 9/9/2
f 22/8/1 25/1/1 9/9/1
f 6/10/3 7/11/3 23/12/3
f 20/13/4 23/12/4 24/14/4
f 21/15/5 24/14/5 22/8/5
f 5/16/6 6/10/6 17/17/6
f 17/17/6 20/13/6 18/18/6
f 18/18/7 21/15/7 22/8/7
f 1/19/3 5/16/3 13/20/3
f 13/20/2 17/17/2 12/21/2
f 12/21/2 19/7/2 11/4/2
f 7/11/1 2/22/1 14/23/1
f 23/12/1 14/23/1 15/24/1
f 24/14/8 15/24/8 25/1/8
f 18/18/6 20/13/6 21/15/6
f 24/14/4 21/15/4 20/13/4
f 22/8/7 19/7/7 18/18/7
f 22/8/5 24/14/5 25/1/5
f 12/21/9 17/17/9 18/18/9
f 25/1/1 15/24/1 16/2/1
f 19/7/10 12/21/10 18/18/10
f 9/9/2 10/5/2 19/7/2
f 9/9/1 25/1/1 8/3/1
f 17/17/6 6/10/6 20/13/6
f 15/24/11 24/14/11 23/12/11
f 23/12/4 20/13/4 6/10/4
f 14/23/1 23/12/1 7/11/1
f 13/20/6 5/16/6 17/17/6
f 10/5/2 11/4/2 19/7/2
f 8/3/1 16/2/1 4/25/1
o SemtexTop
v -0.531250 1.250000 0.531250
v -0.531250 1.250000 0.031250
v -0.031250 1.250000 0.531250
v -0.031250 1.250000 0.031250
v -0.531250 1.250000 -0.031250
v -0.531250 1.250000 -0.531250
v -0.031250 1.250000 -0.031250
v -0.031250 1.250000 -0.531250
v 0.031250 1.250000 0.531250
v 0.031250 1.250000 0.031250
v 0.531250 1.250000 0.531250
v 0.531250 1.250000 0.031250
v 0.031250 1.250000 -0.031250
v 0.031250 1.250000 -0.531250
v 0.531250 1.250000 -0.031250
v 0.531250 1.250000 -0.531250
vt 1.000000 0.500000
vt 0.500000 1.000000
vt 0.500000 0.500000
vt 1.000000 0.000000
vt 0.500000 0.500000
vt 0.500000 0.000000
vt 0.500000 0.500000
vt 0.000000 1.000000
vt -0.000000 0.500000
vt 0.500000 -0.000000
vt 0.000000 0.500000
vt 0.000000 0.000000
vt 1.000000 1.000000
vt 1.000000 0.500000
vt 0.500000 1.000000
vt 0.500000 0.500000
vn 0.0000 1.0000 0.0000
s off
f 27/26/12 28/27/12 29/28/12
f 31/29/12 32/30/12 33/31/12
f 35/32/12 36/33/12 37/34/12
f 39/35/12 40/36/12 41/37/12
f 27/26/12 26/38/12 28/27/12
f 31/29/12 30/39/12 32/30/12
f 35/32/12 34/40/12 36/33/12
f 39/35/12 38/41/12 40/36/12
o SemtexSide
v -0.531250 0.875000 0.531250
v -0.531250 1.250000 0.531250
v -0.531250 0.875000 0.031250
v -0.531250 1.250000 0.031250
v -0.031250 0.312500 0.531250
v -0.031250 1.250000 0.531250
v -0.031250 0.312500 0.031250
v -0.031250 1.250000 0.031250
v -0.531250 0.875000 -0.031250
v -0.531250 1.250000 -0.031250
v -0.531250 0.875000 -0.531250
v -0.531250 1.250000 -0.531250
v -0.031250 0.312500 -0.031250
v -0.031250 1.250000 -0.031250
v -0.031250 0.312500 -0.531250
v -0.031250 1.250000 -0.531250
v 0.031250 0.312500 0.531250
v 0.031250 1.250000 0.531250
v 0.031250 0.312500 0.031250
v 0.031250 1.250000 0.031250
v 0.531250 0.875000 0.531250
v 0.531250 1.250000 0.531250
v 0.531250 0.875000 0.031250
v 0.531250 1.250000 0.031250
v 0.031250 0.312500 -0.031250
v 0.031250 1.250000 -0.031250
v 0.031250 0.312500 -0.531250
v 0.031250 1.250000 -0.531250
v 0.531250 0.875000 -0.031250
v 0.531250 1.250000 -0.031250
v 0.531250 0.875000 -0.531250
v 0.531250 1.250000 -0.531250
vt 1.000000 1.000000
vt 0.500000 0.625000
vt 1.000000 0.625000
vt 1.000000 0.625000
vt 0.500000 1.000000
vt 0.500000 0.062500
vt 0.000000 0.062500
vt 0.500000 1.000000
vt 0.000000 0.625000
vt 0.500000 0.062500
vt 0.500000 1.000000
vt 0.000000 0.625000
vt 0.500000 0.625000
vt 1.000000 0.625000
vt 0.500000 1.000000
vt 0.500000 0.062500
vt 1.000000 1.000000
vt 0.500000 0.062500
vt 1.000000 0.062500
vt 0.500000 1.000000
vt 0.000000 0.625000
vt 1.000000 1.000000
vt 0.500000 0.062500
vt 1.000000 0.062500
vt 0.500000 1.000000
vt -0.000000 0.625000
vt 0.500000 1.000000
vt 0.000000 0.625000
vt 0.500000 0.625000
vt 1.000000 0.625000
vt 0.500000 1.000000
vt 0.500000 0.062500
vt 0.500000 1.000000
vt 0.000000 0.062500
vt 0.500000 0.062500
vt 0.500000 1.000000
vt -0.000000 0.625000
vt 0.500000 0.062500
vt 1.000000 1.000000
vt 0.500000 0.625000
vt 1.000000 0.625000
vt 1.000000 0.625000
vt 0.500000 1.000000
vt 1.000000 1.000000
vt -0.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 1.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.000000 1.000000
vt 0.500000 1.000000
vt 1.000000 1.000000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
s off
f 43/42/13 44/43/13 42/44/13
f 44/45/14 49/46/14 48/47/14
f 49/46/15 46/48/15 48/47/15
f 47/49/16 42/50/16 46/51/16
f 51/52/13 52/53/13 50/54/13
f 52/55/14 57/56/14 56/57/14
f 57/58/15 54/59/15 56/60/15
f 55/61/16 50/62/16 54/59/16
f 59/63/13 60/64/13 58/65/13
f 61/66/14 64/67/14 60/64/14
f 65/68/15 62/69/15 64/70/15
f 62/71/16 59/72/16 58/73/16
f 67/74/13 68/75/13 66/76/13
f 69/77/14 72/78/14 68/79/14
f 73/80/15 70/81/15 72/82/15
f 70/83/16 67/74/16 66/76/16
f 43/42/13 45/84/13 44/43/13
f 44/45/14 45/85/14 49/46/14
f 49/46/15 47/86/15 46/48/15
f 47/49/16 43/87/16 42/50/16
f 51/52/13 53/88/13 52/53/13
f 52/55/14 53/89/14 57/56/14
f 57/58/15 55/61/15 54/59/15
f 55/61/16 51/90/16 50/62/16
f 59/63/13 61/66/13 60/64/13
f 61/66/14 65/91/14 64/67/14
f 65/68/15 63/92/15 62/69/15
f 62/71/16 63/93/16 59/72/16
f 67/74/13 69/94/13 68/75/13
f 69/77/14 73/95/14 72/78/14
f 73/80/15 71/96/15 70/81/15
f 70/83/16 71/97/16 67/74/16

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 B

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B