sulfur caves, new test pipe

This commit is contained in:
Bob 2022-03-26 23:35:05 +01:00
parent c662895f8e
commit d517d665df
43 changed files with 1502 additions and 89 deletions

View File

@ -17,7 +17,7 @@ public interface IFluidConnector {
* @param power
* @return
*/
public int transferFluid(FluidType type, int fluid);
public long transferFluid(FluidType type, long fluid);
/**
* Whether the given side can be connected to
@ -33,7 +33,7 @@ public interface IFluidConnector {
* @param type
* @return
*/
public int getDemand(FluidType type);
public long getDemand(FluidType type);
/**
* Basic implementation of subscribing to a nearby power grid

View File

@ -1,5 +1,6 @@
package api.hbm.fluid;
import java.util.HashSet;
import java.util.List;
import com.hbm.inventory.fluid.FluidType;
@ -9,7 +10,7 @@ public interface IPipeNet {
public void joinNetworks(IPipeNet network);
public List<IFluidConductor> getLinks();
public List<IFluidConnector> getSubscribers();
public HashSet<IFluidConnector> getSubscribers();
public IPipeNet joinLink(IFluidConductor conductor);
public void leaveLink(IFluidConductor conductor);
@ -22,6 +23,6 @@ public interface IPipeNet {
public boolean isValid();
public long transferFluid(long power);
public long transferFluid(long fill);
public FluidType getType();
}

View File

@ -1,15 +1,19 @@
package api.hbm.fluid;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import com.hbm.inventory.fluid.FluidType;
import net.minecraft.tileentity.TileEntity;
public class PipeNet implements IPipeNet {
private boolean valid = true;
private FluidType type;
private List<IFluidConductor> links = new ArrayList();
private List<IFluidConnector> subscribers = new ArrayList();
private HashSet<IFluidConnector> subscribers = new HashSet();
public PipeNet(FluidType type) {
this.type = type;
@ -40,44 +44,79 @@ public class PipeNet implements IPipeNet {
}
@Override
public List<IFluidConnector> getSubscribers() {
public HashSet<IFluidConnector> getSubscribers() {
return subscribers;
}
@Override
public IPipeNet joinLink(IFluidConductor conductor) {
// TODO Auto-generated method stub
return null;
if(conductor.getPipeNet(type) != null)
conductor.getPipeNet(type).leaveLink(conductor);
conductor.setPipeNet(type, this);
this.links.add(conductor);
return this;
}
@Override
public void leaveLink(IFluidConductor conductor) {
// TODO Auto-generated method stub
conductor.setPipeNet(type, null);
this.links.remove(conductor);
}
@Override
public void subscribe(IFluidConnector connector) {
// TODO Auto-generated method stub
this.subscribers.add(connector);
}
@Override
public void unsubscribe(IFluidConnector connector) {
// TODO Auto-generated method stub
this.subscribers.remove(connector);
}
@Override
public boolean isSubscribed(IFluidConnector connector) {
// TODO Auto-generated method stub
return false;
return this.subscribers.contains(connector);
}
@Override
public long transferFluid(long power) {
// TODO Auto-generated method stub
return 0;
public long transferFluid(long fill) {
this.subscribers.removeIf(x ->
x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid()
);
if(this.subscribers.isEmpty())
return fill;
List<IFluidConnector> subList = new ArrayList(subscribers);
List<Long> weight = new ArrayList();
long totalReq = 0;
for(IFluidConnector con : subList) {
long req = con.getDemand(type);
weight.add(req);
totalReq += req;
}
if(totalReq == 0)
return fill;
long totalGiven = 0;
for(int i = 0; i < subList.size(); i++) {
IFluidConnector con = subList.get(i);
long req = weight.get(i);
double fraction = (double)req / (double)totalReq;
long given = (long) Math.floor(fraction * fill);
totalGiven += (given - con.transferFluid(type, given));
}
return fill - totalGiven;
}
@Override
@ -87,13 +126,17 @@ public class PipeNet implements IPipeNet {
@Override
public void destroy() {
// TODO Auto-generated method stub
this.valid = false;
this.subscribers.clear();
for(IFluidConductor con : this.links)
con.setPipeNet(type, null);
this.links.clear();
}
@Override
public boolean isValid() {
// TODO Auto-generated method stub
return false;
return this.valid;
}
}

View File

@ -0,0 +1,64 @@
package com.hbm.blocks;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
public class BlockEnumMulti extends BlockBase {
public Class<? extends Enum> theEnum;
public boolean multiName;
private boolean multiTexture;
public BlockEnumMulti(Material mat, Class<? extends Enum> theEnum, boolean multiName, boolean multiTexture) {
super(mat);
this.theEnum = theEnum;
this.multiName = multiName;
this.multiTexture = multiTexture;
}
@Override
public int damageDropped(int meta) {
return meta;
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < theEnum.getEnumConstants().length; ++i) {
list.add(new ItemStack(item, 1, i));
}
}
private IIcon[] icons;
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
if(multiTexture) {
Enum[] enums = theEnum.getEnumConstants();
this.icons = new IIcon[enums.length];
for(int i = 0; i < icons.length; i++) {
Enum num = enums[i];
this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase());
}
} else {
this.blockIcon = reg.registerIcon(this.getTextureName());
}
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
return this.icons[meta % this.icons.length];
}
}

View File

@ -0,0 +1,8 @@
package com.hbm.blocks;
public class BlockEnums {
public static enum EnumStoneType {
SULFUR
}
}

View File

@ -133,6 +133,9 @@ public class ModBlocks {
public static Block ore_depth_nether_neodymium;
public static Block stone_porous;
public static Block stone_resource;
public static Block stalagmite;
public static Block stalactite;
public static Block depth_brick;
public static Block depth_tiles;
@ -476,6 +479,9 @@ public class ModBlocks {
public static Block geysir_vapor;
public static Block geysir_nether;
public static Block observer_off;
public static Block observer_on;
public static Block flame_war;
public static Block float_bomb;
public static Block therm_endo;
@ -1340,6 +1346,9 @@ public class ModBlocks {
ore_depth_nether_neodymium = new BlockDepthOre().setBlockName("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_nether_neodymium");
stone_porous = new BlockPorous().setBlockName("stone_porous").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_porous");
stone_resource = new BlockEnumMulti(Material.rock, BlockEnums.EnumStoneType.class, true, true).setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F);
stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F);
stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F);
basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt");
basalt_sulfur = new BlockOre(Material.rock).setBlockName("basalt_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_sulfur");
@ -1679,6 +1688,9 @@ public class ModBlocks {
geysir_vapor = new BlockGeysir(Material.rock).setBlockName("geysir_vapor").setStepSound(Block.soundTypeStone).setHardness(5.0F);
geysir_nether = new BlockGeysir(Material.rock).setBlockName("geysir_nether").setLightLevel(1.0F).setStepSound(Block.soundTypeStone).setHardness(2.0F);
observer_off = new BlockObserver(Material.iron, false).setBlockName("observer_off").setStepSound(Block.soundTypeStone).setHardness(2.0F);
observer_on = new BlockObserver(Material.iron, true).setBlockName("observer_on").setStepSound(Block.soundTypeStone).setHardness(2.0F);
nuke_gadget = new NukeGadget(Material.iron).setBlockName("nuke_gadget").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":theGadget");
nuke_boy = new NukeBoy(Material.iron).setBlockName("nuke_boy").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":lilBoy");
nuke_man = new NukeMan(Material.iron).setBlockName("nuke_man").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":fatMan");
@ -2377,6 +2389,11 @@ public class ModBlocks {
GameRegistry.registerBlock(crystal_robust, crystal_robust.getUnlocalizedName());
GameRegistry.registerBlock(crystal_trixite, crystal_trixite.getUnlocalizedName());
//Resource-bearing Stones
GameRegistry.registerBlock(stone_resource, ItemBlockBase.class, stone_resource.getUnlocalizedName());
GameRegistry.registerBlock(stalagmite, ItemBlockBase.class, stalagmite.getUnlocalizedName());
GameRegistry.registerBlock(stalactite, ItemBlockBase.class, stalactite.getUnlocalizedName());
//Stone Variants
GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName());
GameRegistry.registerBlock(stone_gneiss, stone_gneiss.getUnlocalizedName());
@ -2829,6 +2846,9 @@ public class ModBlocks {
GameRegistry.registerBlock(bomber, bomber.getUnlocalizedName());
//Machines
//GameRegistry.registerBlock(observer_off, observer_off.getUnlocalizedName());
//GameRegistry.registerBlock(observer_on, observer_on.getUnlocalizedName());
GameRegistry.registerBlock(anvil_iron, ItemBlockBase.class, anvil_iron.getUnlocalizedName());
GameRegistry.registerBlock(anvil_lead, ItemBlockBase.class, anvil_lead.getUnlocalizedName());
GameRegistry.registerBlock(anvil_steel, ItemBlockBase.class, anvil_steel.getUnlocalizedName());

View File

@ -0,0 +1,70 @@
package com.hbm.blocks.generic;
import java.util.Random;
import com.hbm.blocks.BlockEnumMulti;
import com.hbm.blocks.BlockEnums;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockStalagmite extends BlockEnumMulti {
public BlockStalagmite() {
super(Material.rock, BlockEnums.EnumStoneType.class, true, true);
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public int getRenderType() {
return 1;
}
@Override
public Item getItemDropped(int meta, Random rang, int fortune) {
switch(meta) {
case 0: return ModItems.sulfur;
}
return null;
}
@Override
public boolean canPlaceBlockAt(World world, int x, int y, int z) {
if(this == ModBlocks.stalagmite)
return World.doesBlockHaveSolidTopSurface(world, x, y - 1, z);
if(this == ModBlocks.stalactite)
return world.isSideSolid(x, y + 1, z, ForgeDirection.DOWN);
return true;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
if(!canPlaceBlockAt(world, x, y, z)) {
world.func_147480_a(x, y, z, true);
}
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
return null;
}
}

View File

@ -0,0 +1,83 @@
package com.hbm.blocks.machine;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPistonBase;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockObserver extends Block {
private boolean isActive;
@SideOnly(Side.CLIENT)
private IIcon iconFront;
@SideOnly(Side.CLIENT)
private IIcon iconBack;
public BlockObserver(Material mat, boolean isActive) {
super(mat);
this.isActive = isActive;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
this.iconBack = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":observer_back_on" : ":observer_back_off"));
this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":observer_front");
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":observer_side");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata) {
ForgeDirection dir = ForgeDirection.getOrientation(metadata);
ForgeDirection opp = dir.getOpposite();
return side == dir.ordinal() ? iconFront : side == opp.ordinal() ? iconBack : blockIcon;
}
@Override
public Item getItemDropped(int meta, Random rand, int luck) {
return Item.getItemFromBlock(ModBlocks.observer_off);
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
int l = BlockPistonBase.determineOrientation(world, x, y, z, player);
world.setBlockMetadataWithNotify(x, y, z, l, 2);
if(this.isActive)
world.scheduleBlockUpdate(x, y, z, this, 2);
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
if(!this.isActive) {
}
}
@Override
public boolean canProvidePower() {
return this.isActive;
}
@Override
public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) {
return this.isActive ? 15 : 0;
}
}

View File

@ -160,63 +160,55 @@ public class SoyuzLauncher extends BlockDummyable {
private static boolean keepInventory;
@Override
public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int i)
{
if (!keepInventory)
{
ISidedInventory tileentityfurnace = (ISidedInventory)world.getTileEntity(x, y, z);
public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int i) {
if(!keepInventory) {
ISidedInventory tileentityfurnace = (ISidedInventory) world.getTileEntity(x, y, z);
if (tileentityfurnace != null)
{
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1)
{
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
if(tileentityfurnace != null) {
for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
if (itemstack != null)
{
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
if(itemstack != null) {
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
while (itemstack.stackSize > 0)
{
int j1 = this.field_149933_a.nextInt(21) + 10;
while(itemstack.stackSize > 0) {
int j1 = this.field_149933_a.nextInt(21) + 10;
if (j1 > itemstack.stackSize)
{
j1 = itemstack.stackSize;
}
if(j1 > itemstack.stackSize) {
j1 = itemstack.stackSize;
}
itemstack.stackSize -= j1;
EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
itemstack.stackSize -= j1;
EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
if (itemstack.hasTagCompound())
{
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
}
if(itemstack.hasTagCompound()) {
entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
}
float f3 = 0.05F;
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3;
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F;
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3;
world.spawnEntityInWorld(entityitem);
}
}
}
for(int l = 0; l < 10; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 38)));
for(int l = 0; l < 8; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 41)));
for(int l = 0; l < 6; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 64)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53)));
world.func_147453_f(x, y, z, p_149749_5_);
}
}
float f3 = 0.05F;
entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
world.spawnEntityInWorld(entityitem);
}
}
}
super.breakBlock(world, x, y, z, p_149749_5_, i);
}
for(int l = 0; l < 10; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 38)));
for(int l = 0; l < 8; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 41)));
for(int l = 0; l < 6; l++)
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 64)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53)));
world.func_147453_f(x, y, z, p_149749_5_);
}
}
super.breakBlock(world, x, y, z, p_149749_5_, i);
}
}

View File

@ -3,16 +3,36 @@ package com.hbm.blocks.test;
import com.hbm.tileentity.network.TileEntityPipeBaseNT;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class TestPipe extends BlockContainer {
@SideOnly(Side.CLIENT)
protected IIcon overlay;
public TestPipe(Material mat) {
super(mat);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
super.registerBlockIcons(iconRegister);
this.overlay = iconRegister.registerIcon(this.getTextureName() + "_overlay");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata) {
return side == 0 ? this.blockIcon : this.overlay;
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {

View File

@ -29,7 +29,7 @@ public class MultiblockHandlerXR {
if(a == ox && b == oy && c == oz)
continue;
if(!world.getBlock(a, b, c).canPlaceBlockAt(world, a, b, c)) {
if(!world.getBlock(a, b, c).isReplaceable(world, a, b, c)) {
return false;
}

View File

@ -10,6 +10,7 @@ import com.hbm.handler.BulletConfiguration;
import com.hbm.interfaces.IBulletImpactBehavior;
import com.hbm.interfaces.IBulletUpdateBehavior;
import com.hbm.items.ModItems;
import com.hbm.lib.ModDamageSource;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
@ -92,6 +93,7 @@ public class GunNPCFactory {
bullet.explosive = 0.5F;
bullet.setToBolt(BulletConfiguration.BOLT_LACUNAE);
bullet.vPFX = "reddust";
bullet.damageType = ModDamageSource.s_laser;
return bullet;
}
@ -124,6 +126,7 @@ public class GunNPCFactory {
bullet.leadChance = 0;
bullet.setToBolt(BulletConfiguration.BOLT_NIGHTMARE);
bullet.vPFX = "reddust";
bullet.damageType = ModDamageSource.s_laser;
bullet.bImpact = new IBulletImpactBehavior() {
@ -210,6 +213,7 @@ public class GunNPCFactory {
bullet.leadChance = 0;
bullet.doesRicochet = false;
bullet.setToBolt(BulletConfiguration.BOLT_WORM);
bullet.damageType = ModDamageSource.s_laser;
return bullet;
}
@ -226,6 +230,7 @@ public class GunNPCFactory {
bullet.leadChance = 0;
bullet.doesRicochet = false;
bullet.setToBolt(BulletConfiguration.BOLT_LASER);
bullet.damageType = ModDamageSource.s_laser;
return bullet;
}

View File

@ -10,6 +10,7 @@ import static com.hbm.items.ModItems.*;
import static com.hbm.blocks.ModBlocks.*;
import static com.hbm.inventory.OreDictManager.DictFrame.*;
import com.hbm.blocks.BlockEnums.EnumStoneType;
import com.hbm.config.GeneralConfig;
import com.hbm.hazard.HazardData;
import com.hbm.hazard.HazardEntry;
@ -349,7 +350,7 @@ public class OreDictManager {
/*
* DUST AND GEM ORES
*/
S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, ore_meteor_sulfur) .oreNether(ore_nether_sulfur);
S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, ore_meteor_sulfur, DictFrame.fromOne(stone_resource, EnumStoneType.SULFUR)) .oreNether(ore_nether_sulfur);
KNO .dust(niter) .block(block_niter) .ore(ore_niter);
F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite);
LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite);
@ -572,9 +573,15 @@ public class OreDictManager {
public static ItemStack fromOne(Item item, Enum en) {
return new ItemStack(item, 1, en.ordinal());
}
public static ItemStack fromOne(Block block, Enum en) {
return new ItemStack(block, 1, en.ordinal());
}
public static ItemStack fromOne(Item item, Enum en, int stacksize) {
return new ItemStack(item, stacksize, en.ordinal());
}
public static ItemStack fromOne(Block block, Enum en, int stacksize) {
return new ItemStack(block, stacksize, en.ordinal());
}
/** Same as fromOne but with an array of ItemStacks. The array type is Object[] so that the ODM methods work with it. Generates ItemStacks for the entire enum class. */
public static Object[] fromAll(Item item, Class<? extends Enum> en) {
Enum[] vals = en.getEnumConstants();

View File

@ -178,6 +178,7 @@ public class AssemblerRecipes {
makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150);
makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200);
makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), },300);
makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new OreDictStack(OreDictManager.getReflector(), 6), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), },500);
makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600);
makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300);
makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300);

View File

@ -93,6 +93,12 @@ public class ChemplantRecipes {
.inputItems(new OreDictStack(KNO.dust()))
.inputFluids(new FluidStack(Fluids.AROMATICS, 500))
.outputItems(new ItemStack(ModItems.ball_tnt, 4)));
recipes.add(new ChemRecipe(89, "DYNAMITE", 50)
.inputItems(
new ComparableStack(Items.sugar),
new OreDictStack(KNO.dust()),
new OreDictStack("sand"))
.outputItems(new ItemStack(ModItems.ball_dynamite, 2)));
recipes.add(new ChemRecipe(84, "C4", 150)
.inputItems(new OreDictStack(KNO.dust()))
.inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500))

View File

@ -2,7 +2,9 @@ package com.hbm.items.block;
import java.util.List;
import com.hbm.blocks.BlockEnumMulti;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.util.EnumUtil;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
@ -14,6 +16,31 @@ public class ItemBlockBase extends ItemBlock {
public ItemBlockBase(Block block) {
super(block);
if(block instanceof BlockEnumMulti) {
this.setMaxDamage(0);
this.setHasSubtypes(true);
}
}
@Override
public int getMetadata(int meta) {
if(field_150939_a instanceof BlockEnumMulti)
return meta;
else
return super.getMetadata(meta);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
if(field_150939_a instanceof BlockEnumMulti && ((BlockEnumMulti)field_150939_a).multiName) {
Enum num = EnumUtil.grabEnumSafely(((BlockEnumMulti)field_150939_a).theEnum, stack.getItemDamage());
return super.getUnlocalizedName() + "." + num.name().toLowerCase();
} else {
return super.getUnlocalizedName(stack);
}
}
@Override

View File

@ -679,6 +679,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderAnvil());
RenderingRegistry.registerBlockHandler(new RenderCrystal());
RenderingRegistry.registerBlockHandler(new RenderTestCable());
RenderingRegistry.registerBlockHandler(new RenderTestPipe());
RenderingRegistry.registerBlockHandler(new RenderBlockCT());
RenderingRegistry.registerBlockHandler(new RenderDetCord());
RenderingRegistry.registerBlockHandler(new RenderBlockMultipass());
@ -1161,17 +1162,20 @@ public class ClientProxy extends ServerProxy {
}
}
}
double motionX = BobMathUtil.safeClamp(p.motionX + moX, -5, 5);
double motionY = BobMathUtil.safeClamp(p.motionY + moY, -2, 2);
double motionZ = BobMathUtil.safeClamp(p.motionZ + moZ, -5, 5);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, motionX * 2, motionY * 2, motionZ * 2));
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, motionX * 2, motionY * 2, motionZ * 2));
double mX2 = BobMathUtil.safeClamp(p.motionX + moX * 2, -5, 5);
double mY2 = BobMathUtil.safeClamp(p.motionY + moY * 2, -5, 5);
double mZ2 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -5, 5);
double mX3 = BobMathUtil.safeClamp(p.motionX + moX * 2, -10, 10);
double mY3 = BobMathUtil.safeClamp(p.motionY + moY * 2, -10, 10);
double mZ3 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -10, 10);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, mX2, mY2, mZ2));
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, mX2, mY2, mZ2));
if(particleSetting == 0) {
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, motionX * 3, motionY * 3, motionZ * 3));
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, motionX * 3, motionY * 3, motionZ * 3));
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, mX3, mY3, mZ3));
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, mX3, mY3, mZ3));
}
}
}

View File

@ -71,6 +71,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom;
import com.hbm.tileentity.machine.*;
import com.hbm.tileentity.machine.rbmk.RBMKDials;
import com.hbm.util.ArmorUtil;
import com.hbm.world.feature.OreCave;
import com.hbm.world.feature.SchistStratum;
import com.hbm.world.generator.CellularDungeonFactory;
@ -973,6 +974,9 @@ public class MainRegistry {
//expand for the largest entity we have (currently Quackos who is 17.5m in diameter, that's one fat duck)
World.MAX_ENTITY_RADIUS = Math.max(World.MAX_ENTITY_RADIUS, 8.75);
new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20);
//new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70);
}
@EventHandler
@ -989,8 +993,6 @@ public class MainRegistry {
SchistStratum schist = new SchistStratum();
MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre
//new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70);
OreDictManager oreMan = new OreDictManager();
MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent

View File

@ -1179,6 +1179,7 @@ public class ResourceManager {
public static final IModelCustom crystal_robust = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_robust.obj"));
public static final IModelCustom crystal_trixite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_trixite.obj"));
public static final IModelCustom cable_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/cable_neo.obj"));
public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj"));
public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj"));
public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj"));

View File

@ -0,0 +1,130 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.test.TestPipe;
import com.hbm.lib.Library;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
import api.hbm.fluid.IFluidConductor;
import api.hbm.fluid.IFluidConnector;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.obj.WavefrontObject;
public class RenderTestPipe implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
GL11.glPushMatrix();
Tessellator tessellator = Tessellator.instance;
IIcon iicon = block.getIcon(0, 0);
tessellator.setColorOpaque_F(1, 1, 1);
if(renderer.hasOverrideBlockTexture()) {
iicon = renderer.overrideBlockTexture;
}
GL11.glRotated(180, 0, 1, 0);
GL11.glScaled(1.25D, 1.25D, 1.25D);
tessellator.startDrawingQuads();
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pX", iicon, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nX", iicon, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pZ", iicon, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nZ", iicon, tessellator, 0, false);
tessellator.draw();
GL11.glPopMatrix();
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
IIcon iicon = block.getIcon(0, 0);
IIcon overlay = block.getIcon(1, 0);
tessellator.setColorOpaque_F(1, 1, 1);
if(renderer.hasOverrideBlockTexture()) {
iicon = renderer.overrideBlockTexture;
}
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1);
boolean pX = world.getTileEntity(x + 1, y, z) instanceof IFluidConductor;
boolean nX = world.getTileEntity(x - 1, y, z) instanceof IFluidConductor;
boolean pY = world.getTileEntity(x, y + 1, z) instanceof IFluidConductor;
boolean nY = world.getTileEntity(x, y - 1, z) instanceof IFluidConductor;
boolean pZ = world.getTileEntity(x, y, z + 1) instanceof IFluidConductor;
boolean nZ = world.getTileEntity(x, y, z - 1) instanceof IFluidConductor;
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F);
int color = 0xff0000;
if(mask == 0) {
renderDuct(iicon, overlay, color, tessellator, "pX");
renderDuct(iicon, overlay, color, tessellator, "nX");
renderDuct(iicon, overlay, color, tessellator, "pY");
renderDuct(iicon, overlay, color, tessellator, "nY");
renderDuct(iicon, overlay, color, tessellator, "pZ");
renderDuct(iicon, overlay, color, tessellator, "nZ");
} else if(mask == 0b100000 || mask == 0b010000) {
renderDuct(iicon, overlay, color, tessellator, "pX");
renderDuct(iicon, overlay, color, tessellator, "nX");
} else if(mask == 0b001000 || mask == 0b000100) {
renderDuct(iicon, overlay, color, tessellator, "pY");
renderDuct(iicon, overlay, color, tessellator, "nY");
} else if(mask == 0b000010 || mask == 0b000001) {
renderDuct(iicon, overlay, color, tessellator, "pZ");
renderDuct(iicon, overlay, color, tessellator, "nZ");
} else {
if(pX) renderDuct(iicon, overlay, color, tessellator, "pX");
if(nX) renderDuct(iicon, overlay, color, tessellator, "nX");
if(pY) renderDuct(iicon, overlay, color, tessellator, "pY");
if(nY) renderDuct(iicon, overlay, color, tessellator, "nY");
if(pZ) renderDuct(iicon, overlay, color, tessellator, "nZ");
if(nZ) renderDuct(iicon, overlay, color, tessellator, "pZ");
if(!pX && !pY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "ppn", iicon, tessellator, 0, true);
if(!pX && !pY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "ppp", iicon, tessellator, 0, true);
if(!nX && !pY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "npn", iicon, tessellator, 0, true);
if(!nX && !pY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "npp", iicon, tessellator, 0, true);
if(!pX && !nY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pnn", iicon, tessellator, 0, true);
if(!pX && !nY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pnp", iicon, tessellator, 0, true);
if(!nX && !nY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nnn", iicon, tessellator, 0, true);
if(!nX && !nY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nnp", iicon, tessellator, 0, true);
}
tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F);
return true;
}
private void renderDuct(IIcon iicon, IIcon overlay, int color, Tessellator tessellator, String part) {
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, part, iicon, tessellator, 0, true);
ObjUtil.setColor(color);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, part, overlay, tessellator, 0, true);
ObjUtil.clearColor();
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
@Override
public int getRenderId() {
return TestPipe.renderID;
}
}

View File

@ -91,7 +91,11 @@ public class ObjUtil {
if(brightness < 0.45F)
brightness = 0.45F;
tes.setColorOpaque_F(brightness, brightness, brightness);
if(hasColor) {
tes.setColorOpaque((int)(red * brightness), (int)(green * brightness), (int)(blue * brightness));
} else {
tes.setColorOpaque_F(brightness, brightness, brightness);
}
}
for(int i = 0; i < f.vertices.length; i++) {
@ -116,4 +120,27 @@ public class ObjUtil {
}
}
}
private static int red;
private static int green;
private static int blue;
private static boolean hasColor = false;
public static void setColor(int color) {
red = (color & 0xff0000) >> 16;
green = (color & 0x00ff00) >> 8;
blue = color & 0x0000ff;
hasColor = true;
}
public static void setColor(int r, int g, int b) {
red = r;
green = g;
blue = b;
hasColor = true;
}
public static void clearColor() {
hasColor = false;
}
}

View File

@ -184,6 +184,7 @@ public class TileMappings {
put(TileEntityDeaerator.class, "tileentity_deaerator");
put(TileEntityChungus.class, "tileentity_chungus");
put(TileEntityCableBaseNT.class, "tileentity_ohgod");
put(TileEntityPipeBaseNT.class, "tileentity_pipe_base");
put(TileEntityWatz.class, "tileentity_watz");
put(TileEntityMachineBAT9000.class, "tileentity_bat9000");
put(TileEntityMachineOrbus.class, "tileentity_orbus");

View File

@ -74,13 +74,12 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor
}
@Override
public int transferFluid(FluidType type, int fluid) {
// TODO Auto-generated method stub
public long transferFluid(FluidType type, long fluid) {
return 0;
}
@Override
public int getDemand(FluidType type) {
public long getDemand(FluidType type) {
return 0;
}

View File

@ -0,0 +1,125 @@
package com.hbm.world.feature;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockStalagmite;
import com.hbm.inventory.RecipesCommon.MetaBlock;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
public class OreCave {
private NoiseGeneratorPerlin noise;
private MetaBlock ore;
/** The number that is being deducted flat from the result of the perlin noise before all other processing. Increase this to make strata rarer. */
private double threshold = 2D;
/** The mulitplier for the remaining bit after the threshold has been deducted. Increase to make strata wavier. */
private int rangeMult = 3;
/** The maximum range after multiplying - anything above this will be subtracted from (maxRange * 2) to yield the proper range. Increase this to make strata thicker. */
private int maxRange = 4;
/** The y-level around which the stratum is centered. */
private int yLevel = 30;
public OreCave(Block ore) {
this(ore, 0);
}
public OreCave(Block ore, int meta) {
this.ore = new MetaBlock(ore, meta);
MinecraftForge.EVENT_BUS.register(this);
}
public OreCave setThreshold(double threshold) {
this.threshold = threshold;
return this;
}
public OreCave setRangeMult(int rangeMult) {
this.rangeMult = rangeMult;
return this;
}
public OreCave setMaxRange(int maxRange) {
this.maxRange = maxRange;
return this;
}
public OreCave setYLevel(int yLevel) {
this.yLevel = yLevel;
return this;
}
@SubscribeEvent
public void onDecorate(DecorateBiomeEvent.Pre event) {
if(this.noise == null) {
this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 2);
}
World world = event.world;
if(world.provider.dimensionId != 0)
return;
int cX = event.chunkX;
int cZ = event.chunkZ;
double scale = 0.01D;
for(int x = cX; x < cX + 16; x++) {
for(int z = cZ; z < cZ + 16; z++) {
double n = noise.func_151601_a(x * scale, z * scale);
if(n > threshold) {
int range = (int)((n - threshold) * rangeMult);
if(range > maxRange)
range = (maxRange * 2) - range;
if(range < 0)
continue;
for(int y = yLevel - range; y <= yLevel + range; y++) {
Block genTarget = world.getBlock(x, y, z);
if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground)) {
boolean shouldGen = false;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
Block neighbor = world.getBlock(MathHelper.clamp_int(x + dir.offsetX, cX, cX + 16), y + dir.offsetY, MathHelper.clamp_int(z + dir.offsetZ, cZ, cZ + 16));
if(neighbor.getMaterial() == Material.air || neighbor instanceof BlockStalagmite) {
shouldGen = true;
break;
}
}
if(shouldGen) world.setBlock(x, y, z, ore.block, ore.meta, 2);
} else {
if((genTarget.getMaterial() == Material.air || !genTarget.isNormalCube()) && event.rand.nextInt(5) == 0) {
if(ModBlocks.stalactite.canPlaceBlockAt(world, x, y, z)) {
world.setBlock(x, y, z, ModBlocks.stalactite, ore.meta, 2);
} else {
if(ModBlocks.stalagmite.canPlaceBlockAt(world, x, y, z)) {
world.setBlock(x, y, z, ModBlocks.stalagmite, ore.meta, 2);
}
}
}
}
}
}
}
}
}
}

View File

@ -137,6 +137,7 @@ chem.DEUTERIUM=Deuteriumextrahierung
chem.DYN_DNT=Dineutronium-Dynosynthese
chem.DYN_EUPH=Euphemium-Dynosynthese
chem.DYN_SCHRAB=Schrabidium-Dynosynthese
chem.DYNAMITE=Dynamitherstellung
chem.ELECTROLYSIS=Kryo-Elektrolyse
chem.EPEARL=Enderperlen-Synthese
chem.ETHANOL=Ethanolherstellung
@ -3553,6 +3554,8 @@ tile.solar_mirror.name=Heliostatspiegel
tile.soyuz_capsule.name=Landekapsel
tile.soyuz_launcher.name=Soyuz-Startplatform
tile.spikes.name=Stacheln
tile.stalactite.sulfur.name=Schwefelhaltiger Stalaktit
tile.stalagmite.sulfur.name=Schwefelhaltiger Stalagmit
tile.steel_beam.name=Stahlträger
tile.steel_corner.name=Stahlwand (Ecke)
tile.steel_grate.name=Stahlgitter
@ -3564,6 +3567,7 @@ tile.stone_depth.name=Tiefenfels
tile.stone_depth_nether.name=Nether-Tiefenfels
tile.stone_gneiss.name=Graphitschiefer
tile.stone_porous.name=Poröser Stein
tile.stone_resource.sulfur.name=Schwefelhaltiger Stein
tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente
tile.struct_launcher.name=Startrampe-Komponentenblock
tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente

View File

@ -306,6 +306,7 @@ chem.DUCRETE=Ducrete Production
chem.DYN_DNT=Dineutronium Dynosynthesis
chem.DYN_EUPH=Euphemium Dynosynthesis
chem.DYN_SCHRAB=Schrabidium Dynosynthesis
chem.DYNAMITE=Dynamite Synthesis
chem.ELECTROLYSIS=Cryo-Electrolysis
chem.EPEARL=Ender Pearl Synthesis
chem.ETHANOL=Ethanol Production
@ -3926,6 +3927,8 @@ tile.solar_mirror.name=Heliostat Mirror
tile.soyuz_capsule.name=Cargo Landing Capsule
tile.soyuz_launcher.name=Soyuz Launch Platform
tile.spikes.name=Spikes
tile.stalactite.sulfur.name=Sulfurous Stalactite
tile.stalagmite.sulfur.name=Sulfurous Stalagmite
tile.steel_beam.name=Steel Beam
tile.steel_corner.name=Steel Wall Corner
tile.steel_grate.name=Steel Grate
@ -3937,6 +3940,7 @@ tile.stone_depth.name=Depth Rock
tile.stone_depth_nether.name=Nether Depth Rock
tile.stone_gneiss.name=Graphitic Schist
tile.stone_porous.name=Porous Stone
tile.stone_resource.sulfur.name=Sulfurous Stone
tile.struct_iter_core.name=Fusion Reactor Core Component
tile.struct_launcher.name=Launch Pad Component Block
tile.struct_launcher_core.name=Compact Launcher Core Component

View File

@ -0,0 +1,664 @@
# Blender v2.79 (sub 0) OBJ File: 'pipe_neo.blend'
# www.blender.org
o pZ
v 0.187500 0.000000 -0.500000
v 0.132582 -0.132582 -0.500000
v -0.000000 -0.187500 -0.500000
v -0.132583 -0.132582 -0.500000
v -0.187500 0.000000 -0.500000
v -0.132583 0.132583 -0.500000
v -0.000000 0.187500 -0.500000
v 0.132582 0.132583 -0.500000
v -0.132582 0.132583 0.000000
v 0.000000 0.187500 0.000000
v -0.132582 -0.132583 0.000000
v -0.187500 0.000000 0.000000
v 0.132582 -0.132583 0.000000
v 0.000000 -0.187500 0.000000
v 0.132582 0.132583 0.000000
v 0.187500 -0.000000 0.000000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 0.500000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.125000 0.500000
vt 0.250000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.305394 0.319606
vt 0.250674 0.187500
vt 0.624326 0.187500
vt -0.000000 1.000000
vt -0.000000 1.000000
vt -0.000000 1.000000
vt 0.250000 1.000000
vt 0.250000 1.000000
vt -0.000000 1.000000
vt 0.305394 0.055394
vt 0.437500 0.000674
vt 0.569606 0.055394
vt 0.569606 0.319606
vt 0.437500 0.374326
vn -0.3827 0.9239 0.0000
vn -0.9239 -0.3827 0.0000
vn 0.3827 -0.9239 -0.0000
vn 0.3827 0.9239 0.0000
vn -0.9239 0.3827 0.0000
vn -0.3827 -0.9239 -0.0000
vn 0.9239 -0.3827 -0.0000
vn 0.9239 0.3827 -0.0000
vn 0.0000 0.0000 -1.0000
s off
f 7/1/1 9/2/1 10/3/1
f 5/4/2 11/5/2 12/6/2
f 3/7/3 13/8/3 14/9/3
f 8/10/4 10/3/4 15/11/4
f 9/12/5 5/4/5 12/6/5
f 11/13/6 3/7/6 14/9/6
f 2/14/7 16/15/7 13/16/7
f 1/17/8 15/18/8 16/15/8
f 8/19/9 1/20/9 5/21/9
f 7/1/1 6/22/1 9/2/1
f 5/4/2 4/23/2 11/5/2
f 3/7/3 2/24/3 13/8/3
f 8/10/4 7/1/4 10/3/4
f 9/12/5 6/25/5 5/4/5
f 11/13/6 4/26/6 3/7/6
f 2/14/7 1/17/7 16/15/7
f 1/17/8 8/27/8 15/18/8
f 1/20/9 2/28/9 3/29/9
f 3/29/9 4/30/9 1/20/9
f 4/30/9 5/21/9 1/20/9
f 5/21/9 6/31/9 7/32/9
f 7/32/9 8/19/9 5/21/9
o pX
v 0.500000 0.000000 0.187500
v 0.500000 -0.132582 0.132582
v 0.500000 -0.187500 0.000000
v 0.500000 -0.132582 -0.132582
v 0.500000 0.000000 -0.187500
v 0.500000 0.132583 -0.132582
v 0.500000 0.187500 0.000000
v 0.500000 0.132583 0.132582
v 0.000000 -0.000000 0.187500
v 0.000000 0.132583 0.132582
v 0.000000 -0.187500 0.000000
v 0.000000 -0.132583 0.132582
v 0.000000 0.000000 -0.187500
v 0.000000 -0.132583 -0.132582
v 0.000000 0.187500 0.000000
v 0.000000 0.132583 -0.132582
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.125000 0.500000
vt -0.000000 1.000000
vt 0.000000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.125000 0.500000
vt 0.250000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.305394 0.319606
vt 0.250674 0.187500
vt 0.624326 0.187500
vt -0.000000 1.000000
vt 0.125000 1.000000
vt -0.000000 1.000000
vt -0.000000 1.000000
vt 0.305394 0.055394
vt 0.437500 0.000674
vt 0.569606 0.055394
vt 0.569606 0.319606
vt 0.437500 0.374326
vn -0.0000 0.9239 -0.3827
vn 0.0000 -0.3827 -0.9239
vn 0.0000 -0.9239 0.3827
vn -0.0000 0.9239 0.3827
vn -0.0000 0.3827 -0.9239
vn 0.0000 -0.9239 -0.3827
vn 0.0000 -0.3827 0.9239
vn -0.0000 0.3827 0.9239
vn 1.0000 0.0000 0.0000
s off
f 23/33/10 32/34/10 31/35/10
f 29/36/11 20/37/11 30/38/11
f 19/39/12 28/40/12 27/41/12
f 24/42/13 31/35/13 26/43/13
f 22/44/14 29/36/14 32/45/14
f 20/46/15 27/41/15 30/47/15
f 18/48/16 25/49/16 28/50/16
f 17/51/17 26/52/17 25/49/17
f 24/53/18 17/54/18 21/55/18
f 23/33/10 22/56/10 32/34/10
f 29/36/11 21/57/11 20/37/11
f 19/39/12 18/58/12 28/40/12
f 24/42/13 23/33/13 31/35/13
f 22/44/14 21/57/14 29/36/14
f 20/46/15 19/39/15 27/41/15
f 18/48/16 17/51/16 25/49/16
f 17/51/17 24/59/17 26/52/17
f 17/54/18 18/60/18 19/61/18
f 19/61/18 20/62/18 17/54/18
f 20/62/18 21/55/18 17/54/18
f 21/55/18 22/63/18 23/64/18
f 23/64/18 24/53/18 21/55/18
o nZ
v 0.187500 -0.000000 0.500000
v 0.132583 -0.132583 0.500000
v 0.000000 -0.187500 0.500000
v -0.132582 -0.132583 0.500000
v -0.187500 -0.000000 0.500000
v -0.132582 0.132582 0.500000
v 0.000000 0.187500 0.500000
v 0.132583 0.132582 0.500000
v -0.132582 0.132583 0.000000
v 0.000000 0.187500 0.000000
v -0.132582 -0.132583 0.000000
v -0.187500 0.000000 0.000000
v 0.132582 -0.132583 0.000000
v 0.000000 -0.187500 0.000000
v 0.132582 0.132583 0.000000
v 0.187500 -0.000000 0.000000
vt 0.624326 0.187500
vt 0.437500 0.374326
vt 0.250674 0.187500
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.125000 -0.000000
vt 0.250000 0.500000
vt 0.250000 -0.000000
vt 0.250000 -0.000000
vt 0.125000 0.500000
vt 0.125000 -0.000000
vt 0.250000 0.500000
vt 0.125000 -0.000000
vt 0.250000 -0.000000
vt 0.250000 0.500000
vt 0.125000 0.000000
vt 0.250000 0.000000
vt -0.000000 -0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.125000 0.500000
vt -0.000000 0.000000
vt 0.437500 0.000674
vt 0.569606 0.055394
vt 0.569606 0.319606
vt 0.305394 0.319606
vt 0.305394 0.055394
vt 0.000000 0.500000
vt 0.250000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.500000
vn 0.0000 0.0000 1.0000
vn 0.9239 0.3827 0.0000
vn 0.9239 -0.3827 -0.0000
vn -0.3827 -0.9239 -0.0000
vn -0.9239 0.3827 0.0000
vn 0.3827 0.9239 0.0000
vn 0.3827 -0.9239 -0.0000
vn -0.9239 -0.3827 0.0000
vn -0.3827 0.9239 0.0000
s off
f 33/65/19 39/66/19 37/67/19
f 48/68/20 40/69/20 33/70/20
f 45/71/21 33/70/21 34/72/21
f 36/73/22 46/74/22 35/75/22
f 41/76/23 37/77/23 38/78/23
f 47/79/24 39/80/24 40/81/24
f 46/74/25 34/82/25 35/75/25
f 44/83/26 36/84/26 37/77/26
f 42/85/27 38/86/27 39/80/27
f 35/87/19 34/88/19 33/65/19
f 33/65/19 40/89/19 39/66/19
f 39/66/19 38/90/19 37/67/19
f 37/67/19 36/91/19 35/87/19
f 35/87/19 33/65/19 37/67/19
f 48/68/20 47/92/20 40/69/20
f 45/71/21 48/68/21 33/70/21
f 36/73/22 43/93/22 46/74/22
f 41/76/23 44/83/23 37/77/23
f 47/79/24 42/85/24 39/80/24
f 46/74/25 45/94/25 34/82/25
f 44/83/26 43/95/26 36/84/26
f 42/85/27 41/96/27 38/86/27
o nX
v -0.500000 -0.000000 0.187500
v -0.500000 -0.132583 0.132583
v -0.500000 -0.187500 0.000000
v -0.500000 -0.132583 -0.132582
v -0.500000 -0.000000 -0.187500
v -0.500000 0.132582 -0.132582
v -0.500000 0.187500 0.000000
v -0.500000 0.132582 0.132583
v 0.000000 -0.000000 0.187500
v 0.000000 0.132583 0.132582
v 0.000000 -0.187500 0.000000
v 0.000000 -0.132583 0.132582
v 0.000000 0.000000 -0.187500
v 0.000000 -0.132583 -0.132582
v 0.000000 0.187500 0.000000
v 0.000000 0.132583 -0.132582
vt 0.437500 0.000674
vt 0.624326 0.187500
vt 0.437500 0.374326
vt 0.125000 0.000000
vt 0.000000 0.500000
vt -0.000000 0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.125000 -0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.125000 -0.000000
vt 0.250000 0.500000
vt 0.250000 0.000000
vt 0.250000 0.500000
vt 0.250000 -0.000000
vt 0.250000 0.500000
vt 0.250000 -0.000000
vt 0.250000 0.500000
vt 0.125000 -0.000000
vt 0.250000 -0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.569606 0.055394
vt 0.569606 0.319606
vt 0.305394 0.319606
vt 0.250674 0.187500
vt 0.305394 0.055394
vt 0.125000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.500000
vn -1.0000 0.0000 0.0000
vn -0.0000 0.9239 -0.3827
vn 0.0000 -0.3827 -0.9239
vn 0.0000 -0.9239 0.3827
vn -0.0000 0.9239 0.3827
vn -0.0000 0.3827 -0.9239
vn 0.0000 -0.9239 -0.3827
vn 0.0000 -0.3827 0.9239
vn -0.0000 0.3827 0.9239
s off
f 51/97/28 49/98/28 55/99/28
f 55/100/29 64/101/29 54/102/29
f 61/103/30 52/104/30 53/105/30
f 59/106/31 50/107/31 51/108/31
f 58/109/32 55/100/32 56/110/32
f 64/111/33 53/105/33 54/112/33
f 62/113/34 51/108/34 52/114/34
f 60/115/35 49/116/35 50/117/35
f 57/118/36 56/119/36 49/116/36
f 51/97/28 50/120/28 49/98/28
f 49/98/28 56/121/28 55/99/28
f 55/99/28 54/122/28 53/123/28
f 53/123/28 52/124/28 55/99/28
f 52/124/28 51/97/28 55/99/28
f 55/100/29 63/125/29 64/101/29
f 61/103/30 62/126/30 52/104/30
f 59/106/31 60/127/31 50/107/31
f 58/109/32 63/125/32 55/100/32
f 64/111/33 61/103/33 53/105/33
f 62/113/34 59/106/34 51/108/34
f 60/115/35 57/118/35 49/116/35
f 57/118/36 58/128/36 56/119/36
o pY
v -0.000000 0.500000 -0.187500
v -0.132583 0.500000 -0.132582
v -0.187500 0.500000 0.000000
v -0.132583 0.500000 0.132582
v 0.000000 0.500000 0.187500
v 0.132583 0.500000 0.132582
v 0.187500 0.500000 0.000000
v 0.132583 0.500000 -0.132582
v -0.000000 0.000000 -0.187500
v 0.132583 0.000000 -0.132582
v -0.187500 0.000000 0.000000
v -0.132583 0.000000 -0.132582
v 0.000000 0.000000 0.187500
v -0.132583 0.000000 0.132582
v 0.187500 0.000000 0.000000
v 0.132583 0.000000 0.132582
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.125000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.250000 0.500000
vt 0.250000 1.000000
vt 0.125000 0.500000
vt 0.250000 0.500000
vt 0.125000 1.000000
vt 0.000000 0.500000
vt 0.624326 0.187500
vt 0.437500 0.374326
vt 0.250674 0.187500
vt -0.000000 1.000000
vt -0.000000 1.000000
vt -0.000000 1.000000
vt -0.000000 1.000000
vt 0.305394 0.055394
vt 0.437500 0.000674
vt 0.569606 0.055394
vt 0.569606 0.319606
vt 0.305394 0.319606
vn 0.9239 0.0000 0.3827
vn -0.3827 0.0000 0.9239
vn -0.9239 0.0000 -0.3827
vn 0.9239 0.0000 -0.3827
vn 0.3827 0.0000 0.9239
vn -0.9239 0.0000 0.3827
vn -0.3827 0.0000 -0.9239
vn 0.3827 0.0000 -0.9239
vn 0.0000 1.0000 0.0000
s off
f 71/129/37 80/130/37 79/131/37
f 69/132/38 78/133/38 77/134/38
f 67/135/39 76/136/39 75/137/39
f 72/138/40 79/131/40 74/139/40
f 70/140/41 77/134/41 80/141/41
f 68/142/42 75/137/42 78/143/42
f 66/144/43 73/145/43 76/146/43
f 65/147/44 74/148/44 73/145/44
f 69/149/45 71/150/45 65/151/45
f 71/129/37 70/152/37 80/130/37
f 69/132/38 68/153/38 78/133/38
f 67/135/39 66/154/39 76/136/39
f 72/138/40 71/129/40 79/131/40
f 70/140/41 69/132/41 77/134/41
f 68/142/42 67/135/42 75/137/42
f 66/144/43 65/147/43 73/145/43
f 65/147/44 72/155/44 74/148/44
f 65/151/45 66/156/45 69/149/45
f 66/156/45 67/157/45 69/149/45
f 67/157/45 68/158/45 69/149/45
f 69/149/45 70/159/45 71/150/45
f 71/150/45 72/160/45 65/151/45
o nnn
v 0.000000 -0.187500 0.000000
v -0.132582 -0.132583 0.000000
v -0.187500 -0.000000 0.000000
v -0.132582 -0.000000 0.132583
v 0.000000 -0.000000 0.187500
v 0.000000 -0.132583 0.132583
vt 0.250000 0.500000
vt 0.375000 0.375000
vt 0.375000 0.625000
vt 0.500000 0.500000
vt 0.625000 0.375000
vt 0.625000 0.625000
vn -0.3574 -0.8629 0.3574
vn -0.3574 -0.3574 0.8629
vn -0.5774 -0.5774 0.5774
vn -0.8629 -0.3574 0.3574
s off
f 81/161/46 86/162/46 82/163/46
f 84/164/47 86/162/47 85/165/47
f 86/162/48 84/164/48 82/163/48
f 82/163/49 84/164/49 83/166/49
o nnp
v 0.000000 -0.187500 0.000000
v -0.132582 -0.132583 0.000000
v -0.187500 -0.000000 0.000000
v 0.000000 -0.000000 -0.187500
v -0.132582 -0.000000 -0.132583
v 0.000000 -0.132583 -0.132583
vt 0.250000 0.500000
vt 0.375000 0.375000
vt 0.375000 0.625000
vt 0.625000 0.625000
vt 0.500000 0.500000
vt 0.625000 0.375000
vn -0.3574 -0.8629 -0.3574
vn -0.3574 -0.3574 -0.8629
vn -0.5774 -0.5774 -0.5774
vn -0.8629 -0.3574 -0.3574
s off
f 87/167/50 88/168/50 92/169/50
f 90/170/51 92/169/51 91/171/51
f 92/169/52 88/168/52 91/171/52
f 88/168/53 89/172/53 91/171/53
o pnp
v 0.187500 -0.000000 0.000000
v 0.132583 -0.132583 0.000000
v 0.000000 -0.187500 0.000000
v 0.132583 -0.000000 -0.132583
v 0.000000 -0.000000 -0.187500
v 0.000000 -0.132583 -0.132583
vt 0.375000 0.625000
vt 0.250000 0.500000
vt 0.375000 0.375000
vt 0.500000 0.500000
vt 0.625000 0.375000
vt 0.625000 0.625000
vn 0.3574 -0.8629 -0.3574
vn 0.3574 -0.3574 -0.8629
vn 0.5774 -0.5774 -0.5774
vn 0.8629 -0.3574 -0.3574
s off
f 94/173/54 95/174/54 98/175/54
f 96/176/55 98/175/55 97/177/55
f 98/175/56 96/176/56 94/173/56
f 93/178/57 94/173/57 96/176/57
o pnn
v 0.187500 -0.000000 0.000000
v 0.132583 -0.132583 0.000000
v 0.000000 -0.187500 0.000000
v 0.000000 -0.000000 0.187500
v 0.132583 -0.000000 0.132583
v 0.000000 -0.132583 0.132583
vt 0.375000 0.375000
vt 0.375000 0.625000
vt 0.250000 0.500000
vt 0.625000 0.375000
vt 0.500000 0.500000
vt 0.625000 0.625000
vn 0.3574 -0.8629 0.3574
vn 0.8629 -0.3574 0.3574
vn 0.5774 -0.5774 0.5774
vn 0.3574 -0.3574 0.8629
s off
f 100/179/58 104/180/58 101/181/58
f 99/182/59 103/183/59 100/179/59
f 104/180/60 100/179/60 103/183/60
f 103/183/61 102/184/61 104/180/61
o ppn
v 0.187500 -0.000000 0.000000
v 0.000000 0.187500 0.000000
v 0.132583 0.132582 0.000000
v 0.000000 -0.000000 0.187500
v 0.132583 -0.000000 0.132583
v 0.000000 0.132582 0.132583
vt 0.625000 0.375000
vt 0.500000 0.500000
vt 0.375000 0.375000
vt 0.250000 0.500000
vt 0.375000 0.625000
vt 0.625000 0.625000
vn 0.3574 0.3574 0.8629
vn 0.3574 0.8629 0.3574
vn 0.8629 0.3574 0.3574
vn 0.5774 0.5774 0.5774
s off
f 108/185/62 109/186/62 110/187/62
f 106/188/63 110/187/63 107/189/63
f 107/189/64 109/186/64 105/190/64
f 109/186/65 107/189/65 110/187/65
o npn
v -0.187500 -0.000000 0.000000
v -0.132582 0.132582 0.000000
v 0.000000 0.187500 0.000000
v -0.132582 -0.000000 0.132583
v 0.000000 -0.000000 0.187500
v 0.000000 0.132582 0.132583
vt 0.625000 0.375000
vt 0.500000 0.500000
vt 0.375000 0.375000
vt 0.375000 0.625000
vt 0.625000 0.625000
vt 0.250000 0.500000
vn -0.8629 0.3574 0.3574
vn -0.5774 0.5774 0.5774
vn -0.3574 0.3574 0.8629
vn -0.3574 0.8629 0.3574
s off
f 111/191/66 114/192/66 112/193/66
f 114/192/67 116/194/67 112/193/67
f 114/192/68 115/195/68 116/194/68
f 112/193/69 116/194/69 113/196/69
o npp
v -0.187500 -0.000000 0.000000
v -0.132582 0.132582 0.000000
v 0.000000 0.187500 0.000000
v 0.000000 -0.000000 -0.187500
v -0.132582 -0.000000 -0.132583
v 0.000000 0.132582 -0.132583
vt 0.625000 0.375000
vt 0.500000 0.500000
vt 0.375000 0.375000
vt 0.625000 0.625000
vt 0.375000 0.625000
vt 0.250000 0.500000
vn -0.3574 0.3574 -0.8629
vn -0.8629 0.3574 -0.3574
vn -0.5774 0.5774 -0.5774
vn -0.3574 0.8629 -0.3574
s off
f 120/197/70 121/198/70 122/199/70
f 117/200/71 118/201/71 121/198/71
f 121/198/72 118/201/72 122/199/72
f 118/201/73 119/202/73 122/199/73
o ppp
v 0.187500 -0.000000 0.000000
v 0.000000 0.187500 0.000000
v 0.132583 0.132582 0.000000
v 0.132583 -0.000000 -0.132583
v 0.000000 -0.000000 -0.187500
v 0.000000 0.132582 -0.132583
vt 0.500000 0.500000
vt 0.625000 0.625000
vt 0.375000 0.625000
vt 0.250000 0.500000
vt 0.375000 0.375000
vt 0.625000 0.375000
vn 0.3574 0.3574 -0.8629
vn 0.3574 0.8629 -0.3574
vn 0.5774 0.5774 -0.5774
vn 0.8629 0.3574 -0.3574
s off
f 126/203/74 127/204/74 128/205/74
f 124/206/75 125/207/75 128/205/75
f 128/205/76 125/207/76 126/203/76
f 125/207/77 123/208/77 126/203/77
o nY
v -0.000000 -0.500000 -0.187500
v -0.132583 -0.500000 -0.132582
v -0.187500 -0.500000 0.000000
v -0.132583 -0.500000 0.132582
v 0.000000 -0.500000 0.187500
v 0.132583 -0.500000 0.132582
v 0.187500 -0.500000 0.000000
v 0.132583 -0.500000 -0.132582
v -0.000000 0.000000 -0.187500
v 0.132583 0.000000 -0.132582
v -0.187500 0.000000 0.000000
v -0.132583 0.000000 -0.132582
v 0.000000 0.000000 0.187500
v -0.132583 0.000000 0.132582
v 0.187500 0.000000 0.000000
v 0.132583 0.000000 0.132582
vt 0.305394 0.055394
vt 0.437500 0.000674
vt 0.437500 0.374326
vt 0.125000 0.500000
vt -0.000000 0.000000
vt 0.125000 0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.125000 -0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.125000 -0.000000
vt 0.250000 0.500000
vt 0.250000 0.000000
vt 0.250000 0.500000
vt 0.250000 -0.000000
vt 0.250000 0.500000
vt 0.250000 -0.000000
vt 0.250000 0.500000
vt 0.125000 -0.000000
vt 0.250000 -0.000000
vt 0.125000 0.500000
vt -0.000000 -0.000000
vt 0.569606 0.055394
vt 0.624326 0.187500
vt 0.569606 0.319606
vt 0.305394 0.319606
vt 0.250674 0.187500
vt 0.000000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.500000
vt 0.000000 0.500000
vn 0.0000 -1.0000 0.0000
vn 0.9239 0.0000 0.3827
vn -0.3827 0.0000 0.9239
vn -0.9239 0.0000 -0.3827
vn 0.9239 0.0000 -0.3827
vn 0.3827 0.0000 0.9239
vn -0.9239 0.0000 0.3827
vn -0.3827 0.0000 -0.9239
vn 0.3827 0.0000 -0.9239
s off
f 132/209/78 131/210/78 135/211/78
f 143/212/79 134/213/79 135/214/79
f 141/215/80 132/216/80 133/217/80
f 139/218/81 130/219/81 131/220/81
f 138/221/82 135/214/82 136/222/82
f 144/223/83 133/217/83 134/224/83
f 142/225/84 131/220/84 132/226/84
f 140/227/85 129/228/85 130/229/85
f 137/230/86 136/231/86 129/228/86
f 131/210/78 130/232/78 135/211/78
f 130/232/78 129/233/78 135/211/78
f 129/233/78 136/234/78 135/211/78
f 135/211/78 134/235/78 133/236/78
f 133/236/78 132/209/78 135/211/78
f 143/212/79 144/237/79 134/213/79
f 141/215/80 142/238/80 132/216/80
f 139/218/81 140/239/81 130/219/81
f 138/221/82 143/212/82 135/214/82
f 144/223/83 141/215/83 133/217/83
f 142/225/84 139/218/84 131/220/84
f 140/227/85 137/230/85 129/228/85
f 137/230/86 138/240/86 136/231/86

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

View File

@ -0,0 +1,105 @@
{
"animation": {
"frames": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
2,
1
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B