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

View File

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

View File

@ -1,15 +1,19 @@
package api.hbm.fluid; package api.hbm.fluid;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import net.minecraft.tileentity.TileEntity;
public class PipeNet implements IPipeNet { public class PipeNet implements IPipeNet {
private boolean valid = true;
private FluidType type; private FluidType type;
private List<IFluidConductor> links = new ArrayList(); private List<IFluidConductor> links = new ArrayList();
private List<IFluidConnector> subscribers = new ArrayList(); private HashSet<IFluidConnector> subscribers = new HashSet();
public PipeNet(FluidType type) { public PipeNet(FluidType type) {
this.type = type; this.type = type;
@ -40,44 +44,79 @@ public class PipeNet implements IPipeNet {
} }
@Override @Override
public List<IFluidConnector> getSubscribers() { public HashSet<IFluidConnector> getSubscribers() {
return subscribers; return subscribers;
} }
@Override @Override
public IPipeNet joinLink(IFluidConductor conductor) { 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 @Override
public void leaveLink(IFluidConductor conductor) { public void leaveLink(IFluidConductor conductor) {
// TODO Auto-generated method stub conductor.setPipeNet(type, null);
this.links.remove(conductor);
} }
@Override @Override
public void subscribe(IFluidConnector connector) { public void subscribe(IFluidConnector connector) {
// TODO Auto-generated method stub this.subscribers.add(connector);
} }
@Override @Override
public void unsubscribe(IFluidConnector connector) { public void unsubscribe(IFluidConnector connector) {
// TODO Auto-generated method stub this.subscribers.remove(connector);
} }
@Override @Override
public boolean isSubscribed(IFluidConnector connector) { public boolean isSubscribed(IFluidConnector connector) {
// TODO Auto-generated method stub return this.subscribers.contains(connector);
return false;
} }
@Override @Override
public long transferFluid(long power) { public long transferFluid(long fill) {
// TODO Auto-generated method stub
return 0; 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 @Override
@ -87,13 +126,17 @@ public class PipeNet implements IPipeNet {
@Override @Override
public void destroy() { 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 @Override
public boolean isValid() { public boolean isValid() {
// TODO Auto-generated method stub return this.valid;
return false;
} }
} }

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 ore_depth_nether_neodymium;
public static Block stone_porous; 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_brick;
public static Block depth_tiles; public static Block depth_tiles;
@ -476,6 +479,9 @@ public class ModBlocks {
public static Block geysir_vapor; public static Block geysir_vapor;
public static Block geysir_nether; public static Block geysir_nether;
public static Block observer_off;
public static Block observer_on;
public static Block flame_war; public static Block flame_war;
public static Block float_bomb; public static Block float_bomb;
public static Block therm_endo; 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"); 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_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 = 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"); 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_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); 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_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_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"); 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_robust, crystal_robust.getUnlocalizedName());
GameRegistry.registerBlock(crystal_trixite, crystal_trixite.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 //Stone Variants
GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName());
GameRegistry.registerBlock(stone_gneiss, stone_gneiss.getUnlocalizedName()); GameRegistry.registerBlock(stone_gneiss, stone_gneiss.getUnlocalizedName());
@ -2829,6 +2846,9 @@ public class ModBlocks {
GameRegistry.registerBlock(bomber, bomber.getUnlocalizedName()); GameRegistry.registerBlock(bomber, bomber.getUnlocalizedName());
//Machines //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_iron, ItemBlockBase.class, anvil_iron.getUnlocalizedName());
GameRegistry.registerBlock(anvil_lead, ItemBlockBase.class, anvil_lead.getUnlocalizedName()); GameRegistry.registerBlock(anvil_lead, ItemBlockBase.class, anvil_lead.getUnlocalizedName());
GameRegistry.registerBlock(anvil_steel, ItemBlockBase.class, anvil_steel.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; private static boolean keepInventory;
@Override @Override
public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int i) public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int i) {
{ if(!keepInventory) {
if (!keepInventory) ISidedInventory tileentityfurnace = (ISidedInventory) world.getTileEntity(x, y, z);
{
ISidedInventory tileentityfurnace = (ISidedInventory)world.getTileEntity(x, y, z);
if (tileentityfurnace != null) if(tileentityfurnace != null) {
{ for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) {
for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
{
ItemStack itemstack = tileentityfurnace.getStackInSlot(i1);
if (itemstack != null) if(itemstack != null) {
{ float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; float f1 = 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;
float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F;
while (itemstack.stackSize > 0) while(itemstack.stackSize > 0) {
{ int j1 = this.field_149933_a.nextInt(21) + 10;
int j1 = this.field_149933_a.nextInt(21) + 10;
if (j1 > itemstack.stackSize) if(j1 > itemstack.stackSize) {
{ j1 = itemstack.stackSize;
j1 = itemstack.stackSize; }
}
itemstack.stackSize -= j1; itemstack.stackSize -= j1;
EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
if (itemstack.hasTagCompound()) if(itemstack.hasTagCompound()) {
{ entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy());
entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); }
}
float f3 = 0.05F; float f3 = 0.05F;
entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3;
entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F;
entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3;
world.spawnEntityInWorld(entityitem); world.spawnEntityInWorld(entityitem);
} }
} }
} }
for(int l = 0; l < 10; l++) 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))); 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++) 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))); 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++) 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, 64)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53))); 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_); world.func_147453_f(x, y, z, p_149749_5_);
} }
} }
super.breakBlock(world, x, y, z, p_149749_5_, i); super.breakBlock(world, x, y, z, p_149749_5_, i);
} }
} }

View File

@ -3,17 +3,37 @@ package com.hbm.blocks.test;
import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.tileentity.network.TileEntityPipeBaseNT;
import cpw.mods.fml.client.registry.RenderingRegistry; 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.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TestPipe extends BlockContainer { public class TestPipe extends BlockContainer {
@SideOnly(Side.CLIENT)
protected IIcon overlay;
public TestPipe(Material mat) { public TestPipe(Material mat) {
super(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 @Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityPipeBaseNT(); return new TileEntityPipeBaseNT();

View File

@ -29,7 +29,7 @@ public class MultiblockHandlerXR {
if(a == ox && b == oy && c == oz) if(a == ox && b == oy && c == oz)
continue; 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; return false;
} }

View File

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

View File

@ -10,6 +10,7 @@ import static com.hbm.items.ModItems.*;
import static com.hbm.blocks.ModBlocks.*; import static com.hbm.blocks.ModBlocks.*;
import static com.hbm.inventory.OreDictManager.DictFrame.*; import static com.hbm.inventory.OreDictManager.DictFrame.*;
import com.hbm.blocks.BlockEnums.EnumStoneType;
import com.hbm.config.GeneralConfig; import com.hbm.config.GeneralConfig;
import com.hbm.hazard.HazardData; import com.hbm.hazard.HazardData;
import com.hbm.hazard.HazardEntry; import com.hbm.hazard.HazardEntry;
@ -349,7 +350,7 @@ public class OreDictManager {
/* /*
* DUST AND GEM ORES * 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); KNO .dust(niter) .block(block_niter) .ore(ore_niter);
F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite); F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite);
LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite); LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite);
@ -572,9 +573,15 @@ public class OreDictManager {
public static ItemStack fromOne(Item item, Enum en) { public static ItemStack fromOne(Item item, Enum en) {
return new ItemStack(item, 1, en.ordinal()); 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) { public static ItemStack fromOne(Item item, Enum en, int stacksize) {
return new ItemStack(item, stacksize, en.ordinal()); 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. */ /** 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) { public static Object[] fromAll(Item item, Class<? extends Enum> en) {
Enum[] vals = en.getEnumConstants(); 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_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_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_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_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_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); 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())) .inputItems(new OreDictStack(KNO.dust()))
.inputFluids(new FluidStack(Fluids.AROMATICS, 500)) .inputFluids(new FluidStack(Fluids.AROMATICS, 500))
.outputItems(new ItemStack(ModItems.ball_tnt, 4))); .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) recipes.add(new ChemRecipe(84, "C4", 150)
.inputItems(new OreDictStack(KNO.dust())) .inputItems(new OreDictStack(KNO.dust()))
.inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500)) .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500))

View File

@ -2,7 +2,9 @@ package com.hbm.items.block;
import java.util.List; import java.util.List;
import com.hbm.blocks.BlockEnumMulti;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.util.EnumUtil;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -14,6 +16,31 @@ public class ItemBlockBase extends ItemBlock {
public ItemBlockBase(Block block) { public ItemBlockBase(Block block) {
super(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 @Override

View File

@ -679,6 +679,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderAnvil()); RenderingRegistry.registerBlockHandler(new RenderAnvil());
RenderingRegistry.registerBlockHandler(new RenderCrystal()); RenderingRegistry.registerBlockHandler(new RenderCrystal());
RenderingRegistry.registerBlockHandler(new RenderTestCable()); RenderingRegistry.registerBlockHandler(new RenderTestCable());
RenderingRegistry.registerBlockHandler(new RenderTestPipe());
RenderingRegistry.registerBlockHandler(new RenderBlockCT()); RenderingRegistry.registerBlockHandler(new RenderBlockCT());
RenderingRegistry.registerBlockHandler(new RenderDetCord()); RenderingRegistry.registerBlockHandler(new RenderDetCord());
RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); RenderingRegistry.registerBlockHandler(new RenderBlockMultipass());
@ -1162,16 +1163,19 @@ public class ClientProxy extends ServerProxy {
} }
} }
double motionX = BobMathUtil.safeClamp(p.motionX + moX, -5, 5); double mX2 = BobMathUtil.safeClamp(p.motionX + moX * 2, -5, 5);
double motionY = BobMathUtil.safeClamp(p.motionY + moY, -2, 2); double mY2 = BobMathUtil.safeClamp(p.motionY + moY * 2, -5, 5);
double motionZ = BobMathUtil.safeClamp(p.motionZ + moZ, -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, motionX * 2, motionY * 2, motionZ * 2)); 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, motionX * 2, motionY * 2, motionZ * 2)); Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, mX2, mY2, mZ2));
if(particleSetting == 0) { 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, mX3, mY3, mZ3));
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));
} }
} }
} }

View File

@ -71,6 +71,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom;
import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.*;
import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.tileentity.machine.rbmk.RBMKDials;
import com.hbm.util.ArmorUtil; import com.hbm.util.ArmorUtil;
import com.hbm.world.feature.OreCave;
import com.hbm.world.feature.SchistStratum; import com.hbm.world.feature.SchistStratum;
import com.hbm.world.generator.CellularDungeonFactory; 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) //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); 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 @EventHandler
@ -989,8 +993,6 @@ public class MainRegistry {
SchistStratum schist = new SchistStratum(); SchistStratum schist = new SchistStratum();
MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre
//new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70);
OreDictManager oreMan = new OreDictManager(); OreDictManager oreMan = new OreDictManager();
MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent 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_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 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 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_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")); 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) if(brightness < 0.45F)
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++) { 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(TileEntityDeaerator.class, "tileentity_deaerator");
put(TileEntityChungus.class, "tileentity_chungus"); put(TileEntityChungus.class, "tileentity_chungus");
put(TileEntityCableBaseNT.class, "tileentity_ohgod"); put(TileEntityCableBaseNT.class, "tileentity_ohgod");
put(TileEntityPipeBaseNT.class, "tileentity_pipe_base");
put(TileEntityWatz.class, "tileentity_watz"); put(TileEntityWatz.class, "tileentity_watz");
put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000");
put(TileEntityMachineOrbus.class, "tileentity_orbus"); put(TileEntityMachineOrbus.class, "tileentity_orbus");

View File

@ -74,13 +74,12 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor
} }
@Override @Override
public int transferFluid(FluidType type, int fluid) { public long transferFluid(FluidType type, long fluid) {
// TODO Auto-generated method stub
return 0; return 0;
} }
@Override @Override
public int getDemand(FluidType type) { public long getDemand(FluidType type) {
return 0; 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_DNT=Dineutronium-Dynosynthese
chem.DYN_EUPH=Euphemium-Dynosynthese chem.DYN_EUPH=Euphemium-Dynosynthese
chem.DYN_SCHRAB=Schrabidium-Dynosynthese chem.DYN_SCHRAB=Schrabidium-Dynosynthese
chem.DYNAMITE=Dynamitherstellung
chem.ELECTROLYSIS=Kryo-Elektrolyse chem.ELECTROLYSIS=Kryo-Elektrolyse
chem.EPEARL=Enderperlen-Synthese chem.EPEARL=Enderperlen-Synthese
chem.ETHANOL=Ethanolherstellung chem.ETHANOL=Ethanolherstellung
@ -3553,6 +3554,8 @@ tile.solar_mirror.name=Heliostatspiegel
tile.soyuz_capsule.name=Landekapsel tile.soyuz_capsule.name=Landekapsel
tile.soyuz_launcher.name=Soyuz-Startplatform tile.soyuz_launcher.name=Soyuz-Startplatform
tile.spikes.name=Stacheln tile.spikes.name=Stacheln
tile.stalactite.sulfur.name=Schwefelhaltiger Stalaktit
tile.stalagmite.sulfur.name=Schwefelhaltiger Stalagmit
tile.steel_beam.name=Stahlträger tile.steel_beam.name=Stahlträger
tile.steel_corner.name=Stahlwand (Ecke) tile.steel_corner.name=Stahlwand (Ecke)
tile.steel_grate.name=Stahlgitter tile.steel_grate.name=Stahlgitter
@ -3564,6 +3567,7 @@ tile.stone_depth.name=Tiefenfels
tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_depth_nether.name=Nether-Tiefenfels
tile.stone_gneiss.name=Graphitschiefer tile.stone_gneiss.name=Graphitschiefer
tile.stone_porous.name=Poröser Stein tile.stone_porous.name=Poröser Stein
tile.stone_resource.sulfur.name=Schwefelhaltiger Stein
tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente
tile.struct_launcher.name=Startrampe-Komponentenblock tile.struct_launcher.name=Startrampe-Komponentenblock
tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente

View File

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