Merge branch 'HbmMods:master' into Radio-house
@ -12,6 +12,7 @@
|
||||
* This means that reading the fill state of multiple batteries over the same channel should result the combined fill state of all batteries
|
||||
* Halved base spread of the .22 SMG
|
||||
* Certain secret guns now have a proper way of being obtained
|
||||
* Demolition mini nukes now create fire again
|
||||
|
||||
## Fixed
|
||||
* Fixed RoR controller having the wrong recipe
|
||||
@ -335,7 +335,7 @@ public class ModBlocks {
|
||||
public static Block brick_compound;
|
||||
public static Block brick_asbestos;
|
||||
public static Block brick_fire;
|
||||
|
||||
|
||||
public static Block lightstone;
|
||||
|
||||
public static Block concrete_slab;
|
||||
@ -824,7 +824,7 @@ public class ModBlocks {
|
||||
public static Block drone_dock;
|
||||
public static Block drone_crate_provider;
|
||||
public static Block drone_crate_requester;
|
||||
|
||||
|
||||
public static Block pneumatic_tube;
|
||||
|
||||
public static Block fan;
|
||||
@ -1479,7 +1479,7 @@ public class ModBlocks {
|
||||
gravel_diamond = new BlockFalling(Material.sand).setBlockName("gravel_diamond").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":gravel_diamond");
|
||||
asphalt = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt");
|
||||
asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light");
|
||||
|
||||
|
||||
sandbags = new BlockSandbags(Material.ground).setBlockName("sandbags").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":sandbags");
|
||||
wood_barrier = new BlockBarrier(Material.wood).setStepSound(Block.soundTypeWood).setBlockName("wood_barrier").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":wood_barrier");
|
||||
|
||||
@ -1549,7 +1549,7 @@ public class ModBlocks {
|
||||
brick_double_slab = new BlockMultiSlab(brick_slab, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_double_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
stones_slab = new BlockMultiSlabMeta(null, Material.rock, new Block[] { lightstone, lightstone }, LightstoneType.TILE.ordinal(), LightstoneType.BRICKS.ordinal()).setBlockName("stones_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
stones_double_slab = new BlockMultiSlabMeta(stones_slab, Material.rock, new Block[] { lightstone, lightstone }, LightstoneType.TILE.ordinal(), LightstoneType.BRICKS.ordinal()).setBlockName("stones_double_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
|
||||
|
||||
concrete_smooth_stairs = new BlockGenericStairs(concrete_smooth, 0).setBlockName("concrete_smooth_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_stairs = new BlockGenericStairs(concrete, 0).setBlockName("concrete_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_asbestos_stairs = new BlockGenericStairs(concrete_asbestos, 0).setBlockName("concrete_asbestos_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
@ -1604,7 +1604,7 @@ public class ModBlocks {
|
||||
|
||||
brick_red = new BlockRedBrick(Material.rock).setBlockName("brick_red").setResistance(10_000);
|
||||
|
||||
deco_computer = new BlockDecoModel(Material.iron, DecoComputerEnum.class, true, false).setBlockBoundsTo(.160749F, 0F, 0F, .839251F, .867849F, .622184F).setBlockName("deco_computer").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_computer");
|
||||
deco_computer = new BlockDecoModel(Material.iron, DecoComputerEnum.class, true, false).setBlockBoundsTo(.125F, 0F, 0F, .875F, .875F, .625F).setBlockName("deco_computer").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_computer");
|
||||
deco_crt = new BlockDecoCRT(Material.iron).setBlockName("deco_crt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
deco_toaster = new BlockDecoToaster(Material.iron).setBlockName("deco_toaster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
filing_cabinet = new BlockDecoContainer(Material.iron, DecoCabinetEnum.class, true, false, TileEntityFileCabinet.class).setBlockBoundsTo(.1875F, 0F, 0F, .8125F, 1F, .75F).setBlockName("filing_cabinet").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
@ -1749,7 +1749,7 @@ public class ModBlocks {
|
||||
vitrified_barrel = new YellowBarrel(Material.iron).setBlockName("vitrified_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_vitrified");
|
||||
lox_barrel = new RedBarrel(Material.iron, false).setBlockName("lox_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_lox");
|
||||
taint_barrel = new RedBarrel(Material.iron, false).setBlockName("taint_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_taint");
|
||||
crashed_balefire = new BlockCrashedBomb(Material.iron).setBlockName("crashed_bomb").setCreativeTab(MainRegistry.nukeTab).setBlockUnbreakable().setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":crashed_balefire");
|
||||
crashed_balefire = new BlockCrashedBomb(Material.iron).setBlockName("crashed_bomb").setCreativeTab(MainRegistry.nukeTab).setBlockUnbreakable().setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_rust");
|
||||
fireworks = new BlockFireworks(Material.iron).setBlockName("fireworks").setCreativeTab(MainRegistry.nukeTab).setResistance(5.0F);
|
||||
charge_dynamite = new BlockChargeDynamite().setBlockName("charge_dynamite").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F);
|
||||
charge_miner = new BlockChargeMiner().setBlockName("charge_miner").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F);
|
||||
@ -1955,7 +1955,7 @@ public class ModBlocks {
|
||||
drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock");
|
||||
drone_crate_provider = new DroneDock().setBlockName("drone_crate_provider").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_provider");
|
||||
drone_crate_requester = new DroneDock().setBlockName("drone_crate_requester").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_requester");
|
||||
|
||||
|
||||
pneumatic_tube = new PneumoTube().setBlockName("pneumatic_tube").setStepSound(ModSoundTypes.pipe).setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pneumatic_tube");
|
||||
|
||||
chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain");
|
||||
@ -2698,14 +2698,14 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(brick_light, ItemBlockBlastInfo.class, brick_light.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(brick_asbestos, brick_asbestos.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(brick_fire, ItemBlockBlastInfo.class, brick_fire.getUnlocalizedName());
|
||||
|
||||
|
||||
//Lightstone and its stair/slab variants
|
||||
register(lightstone);
|
||||
register(lightstone_tile_stairs);
|
||||
register(lightstone_bricks_stairs);
|
||||
register(stones_slab, ItemModSlab.class);
|
||||
register(stones_double_slab, ItemModSlab.class);
|
||||
|
||||
|
||||
GameRegistry.registerBlock(concrete_slab, ItemModSlab.class, concrete_slab.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(concrete_double_slab, ItemModSlab.class, concrete_double_slab.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(concrete_brick_slab, ItemModSlab.class, concrete_brick_slab.getUnlocalizedName());
|
||||
@ -2892,7 +2892,7 @@ public class ModBlocks {
|
||||
|
||||
//Generic Bombs
|
||||
GameRegistry.registerBlock(bomb_multi, bomb_multi.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(crashed_balefire, crashed_balefire.getUnlocalizedName());
|
||||
register(crashed_balefire);
|
||||
GameRegistry.registerBlock(fireworks, fireworks.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(dynamite, dynamite.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(tnt, tnt.getUnlocalizedName());
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import com.hbm.blocks.BlockEnumMulti;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.logic.EntityBalefire;
|
||||
import com.hbm.handler.threading.PacketThreading;
|
||||
@ -9,7 +10,7 @@ import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.tileentity.bomb.TileEntityCrashedBomb;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.ITileEntityProvider;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -18,10 +19,14 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockCrashedBomb extends BlockContainer implements IBomb {
|
||||
public class BlockCrashedBomb extends BlockEnumMulti implements ITileEntityProvider, IBomb {
|
||||
|
||||
public static enum EnumDudType {
|
||||
BALEFIRE, CONVENTIONAL, NUKE, SALTED
|
||||
}
|
||||
|
||||
public BlockCrashedBomb(Material mat) {
|
||||
super(mat);
|
||||
super(mat, EnumDudType.class, false, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,6 +36,8 @@ public class BlockBarrier extends Block implements ISBRHUniversal {
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
|
||||
if(world.getBlockMetadata(x, y, z) != 0) return;
|
||||
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
@ -44,24 +46,16 @@ public class BlockBarrier extends Block implements ISBRHUniversal {
|
||||
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) {
|
||||
return side >= 2 && side <= 5 ? side : meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
setBlockBounds(0, 0, 0, 1, 1, 1);
|
||||
|
||||
/*Block nx = world.getBlock(x - 1, y, z);
|
||||
Block px = world.getBlock(x + 1, y, z);
|
||||
Block nz = world.getBlock(x, y, z - 1);
|
||||
Block pz = world.getBlock(x, y, z + 1);
|
||||
|
||||
int count = 0;
|
||||
if(nx.isOpaqueCube() || nx.isNormalCube() || meta == Library.POS_X.ordinal()) count++;
|
||||
if(nz.isOpaqueCube() || nz.isNormalCube() || meta == Library.POS_Z.ordinal()) count++;
|
||||
if(px.isOpaqueCube() || px.isNormalCube() || meta == Library.NEG_X.ordinal()) count++;
|
||||
if(pz.isOpaqueCube() || pz.isNormalCube() || meta == Library.NEG_Z.ordinal()) count++;
|
||||
|
||||
if(count > 1) return;*/
|
||||
|
||||
if(meta == Library.POS_X.ordinal()) setBlockBounds(0, 0, 0, 0.125F, 1, 1);
|
||||
if(meta == Library.POS_Z.ordinal()) setBlockBounds(0, 0, 0, 1, 1, 0.125F);
|
||||
|
||||
@ -94,6 +94,8 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tau, 1), new Object[] { " RD", "CTT", "GMS", 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'C', CU.pipe(), 'T', ModItems.coil_advanced_torus, 'G', ANY_HARDPLASTIC.grip(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'S', ANY_HARDPLASTIC.stock() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lasrifle, 1), new Object[] { "DLC", "BRS", "MG ", 'D', ModItems.crystal_redstone, 'L', DictFrame.fromOne(ModItems.weapon_mod_special, EnumModSpecial.SCOPE), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'B', ANY_BISMOIDBRONZE.lightBarrel(), 'R', ANY_BISMOIDBRONZE.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'M', BIGMT.mechanism(), 'G', ANY_HARDPLASTIC.grip() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_double_barrel_sacred_dragon, 1), new Object[] { ModItems.gun_double_barrel, DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_charge_thrower, 1), new Object[] { "MMM", "BBL", "GG ", 'M', GUNMETAL.mechanism(), 'B', STEEL.heavyBarrel(), 'G', STEEL.grip(), 'L', Items.leather });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_charge_thrower, 1), new Object[] { "MMM", "BBL", "GG ", 'M', GUNMETAL.mechanism(), 'B', STEEL.heavyBarrel(), 'G', STEEL.grip(), 'L', ANY_RUBBER.ingot() });
|
||||
|
||||
//SEDNA Ammo
|
||||
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder });
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package com.hbm.entity.projectile;
|
||||
|
||||
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||
import com.hbm.items.weapon.sedna.factory.XFactoryTool;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.TrackerUtil;
|
||||
import com.hbm.util.Vec3NT;
|
||||
|
||||
import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.EntityTrackerEntry;
|
||||
@ -16,7 +19,7 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
|
||||
public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
public class EntityBulletBaseMK4 extends EntityThrowableInterp implements IEntityAdditionalSpawnData {
|
||||
|
||||
public BulletConfig config;
|
||||
//used for rendering tracers
|
||||
@ -134,7 +137,7 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
double dY = this.posY - this.prevPosY;
|
||||
double dZ = this.posZ - this.prevPosZ;
|
||||
|
||||
if(this.lockonTarget != null && !this.lockonTarget.isDead) {
|
||||
if(!this.inGround && this.lockonTarget != null && !this.lockonTarget.isDead) {
|
||||
Vec3NT motion = new Vec3NT(motionX, motionY, motionZ);
|
||||
double vel = motion.lengthVector();
|
||||
Vec3NT delta = new Vec3NT(lockonTarget.posX - posX, lockonTarget.posY + lockonTarget.height / 2D - posY, lockonTarget.posZ - posZ);
|
||||
@ -153,7 +156,8 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
this.prevVelocity = this.velocity;
|
||||
this.velocity = Math.sqrt(dX * dX + dY * dY + dZ * dZ);
|
||||
|
||||
if(!this.onGround && velocity > 0) {
|
||||
// shitty hack
|
||||
if((this.config != XFactoryTool.ct_hook || !worldObj.isRemote) && !this.inGround && !this.onGround && velocity > 0) {
|
||||
|
||||
float hyp = MathHelper.sqrt_double(dX * dX + dZ * dZ);
|
||||
this.rotationYaw = (float) (Math.atan2(dX, dZ) * 180.0D / Math.PI);
|
||||
@ -184,7 +188,7 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
if(this.config.onImpact != null) this.config.onImpact.accept(this, mop);
|
||||
if(this.isDead) return;
|
||||
if(this.isDead || this.inGround) return;
|
||||
if(this.config.onRicochet != null) this.config.onRicochet.accept(this, mop);
|
||||
if(this.config.onEntityHit != null) this.config.onEntityHit.accept(this, mop);
|
||||
}
|
||||
@ -202,4 +206,12 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
|
||||
@Override public int selfDamageDelay() { return this.config.selfDamageDelay; }
|
||||
|
||||
@Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; }
|
||||
|
||||
@Override public void writeSpawnData(ByteBuf buf) {
|
||||
buf.writeInt(this.thrower != null ? thrower.getEntityId() : -1);
|
||||
}
|
||||
@Override public void readSpawnData(ByteBuf buf) {
|
||||
Entity e = worldObj.getEntityByID(buf.readInt());
|
||||
if(e instanceof EntityLivingBase) this.thrower = (EntityLivingBase) e;
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,6 +57,7 @@ import net.minecraft.world.World;
|
||||
* - also comes with tons of legacy code to ensure compat (sadly)
|
||||
* @author hbm
|
||||
*/
|
||||
@Deprecated
|
||||
public class EntityBulletBaseNT extends EntityThrowableInterp implements IBulletBase {
|
||||
|
||||
@Override public double prevX() { return prevRenderX; }
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
package com.hbm.explosion.vanillant.standard;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.explosion.vanillant.interfaces.IBlockMutator;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
||||
public class BlockMutatorBalefire implements IBlockMutator {
|
||||
|
||||
@Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { }
|
||||
|
||||
@Override
|
||||
public void mutatePost(ExplosionVNT explosion, int x, int y, int z) {
|
||||
|
||||
Block block = explosion.world.getBlock(x, y, z);
|
||||
Block block1 = explosion.world.getBlock(x, y - 1, z);
|
||||
if(block.getMaterial() == Material.air && block1.func_149730_j() && explosion.world.rand.nextInt(3) == 0) {
|
||||
explosion.world.setBlock(x, y, z, ModBlocks.balefire);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -38,16 +38,15 @@ public class CompatHandler {
|
||||
* @return Object[] array containing an int with the "compression level"
|
||||
*/
|
||||
public static Object[] steamTypeToInt(FluidType type) {
|
||||
switch(type.getID()) {
|
||||
case(4): // Fluids.HOTSTEAM
|
||||
return new Object[] {1};
|
||||
case(5): // Fluids.SUPERHOTSTEAM
|
||||
return new Object[] {2};
|
||||
case(6): // Fluids.ULTRAHOTSTEAM
|
||||
return new Object[] {3};
|
||||
default:
|
||||
return new Object[] {0};
|
||||
}
|
||||
final int typeId = type.getID();
|
||||
if(typeId == Fluids.HOTSTEAM.getID()) {
|
||||
return new Object[]{1};
|
||||
} else if(typeId == Fluids.SUPERHOTSTEAM.getID()) {
|
||||
return new Object[]{2};
|
||||
} else if(typeId == Fluids.ULTRAHOTSTEAM.getID()) {
|
||||
return new Object[]{3};
|
||||
}
|
||||
return new Object[] {0};
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.handler;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@ -60,22 +61,35 @@ public abstract class ToolAbility {
|
||||
if(b == Blocks.netherrack && !ToolConfig.recursiveNetherrack)
|
||||
return false;
|
||||
|
||||
List<Integer> indices = Arrays.asList(new Integer[] {0, 1, 2, 3, 4, 5});
|
||||
Collections.shuffle(indices);
|
||||
|
||||
pos.clear();
|
||||
|
||||
for(Integer i : indices) {
|
||||
switch(i) {
|
||||
case 0: breakExtra(world, x + 1, y, z, x, y, z, player, tool, 0); break;
|
||||
case 1: breakExtra(world, x - 1, y, z, x, y, z, player, tool, 0); break;
|
||||
case 2: breakExtra(world, x, y + 1, z, x, y, z, player, tool, 0); break;
|
||||
case 3: breakExtra(world, x, y - 1, z, x, y, z, player, tool, 0); break;
|
||||
case 4: breakExtra(world, x, y, z + 1, x, y, z, player, tool, 0); break;
|
||||
case 5: breakExtra(world, x, y, z - 1, x, y, z, player, tool, 0); break;
|
||||
|
||||
recurse(world, x, y, z, x, y, z, player, tool, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static final List<ThreeInts> offsets = new ArrayList<>(3*3*3-1);
|
||||
|
||||
static {
|
||||
for (int dx = -1; dx <= 1; dx++) {
|
||||
for (int dy = -1; dy <= 1; dy++) {
|
||||
for (int dz = -1; dz <= 1; dz++) {
|
||||
if (dx != 0 || dy != 0 || dz != 0) {
|
||||
offsets.add(new ThreeInts(dx, dy, dz));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void recurse(World world, int x, int y, int z, int refX, int refY, int refZ, EntityPlayer player, IItemAbility tool, int depth) {
|
||||
|
||||
List<ThreeInts> shuffledOffsets = new ArrayList<>(offsets);
|
||||
Collections.shuffle(shuffledOffsets);
|
||||
|
||||
for(ThreeInts offset : shuffledOffsets) {
|
||||
breakExtra(world, x + offset.x, y + offset.y, z + offset.z, refX, refY, refZ, player, tool, depth);
|
||||
}
|
||||
}
|
||||
|
||||
private void breakExtra(World world, int x, int y, int z, int refX, int refY, int refZ, EntityPlayer player, IItemAbility tool, int depth) {
|
||||
@ -112,20 +126,8 @@ public abstract class ToolAbility {
|
||||
return;
|
||||
|
||||
tool.breakExtraBlock(world, x, y, z, player, refX, refY, refZ);
|
||||
|
||||
List<Integer> indices = Arrays.asList(new Integer[] {0, 1, 2, 3, 4, 5});
|
||||
Collections.shuffle(indices);
|
||||
|
||||
for(Integer i : indices) {
|
||||
switch(i) {
|
||||
case 0: breakExtra(world, x + 1, y, z, refX, refY, refZ, player, tool, depth); break;
|
||||
case 1: breakExtra(world, x - 1, y, z, refX, refY, refZ, player, tool, depth); break;
|
||||
case 2: breakExtra(world, x, y + 1, z, refX, refY, refZ, player, tool, depth); break;
|
||||
case 3: breakExtra(world, x, y - 1, z, refX, refY, refZ, player, tool, depth); break;
|
||||
case 4: breakExtra(world, x, y, z + 1, refX, refY, refZ, player, tool, depth); break;
|
||||
case 5: breakExtra(world, x, y, z - 1, refX, refY, refZ, player, tool, depth); break;
|
||||
}
|
||||
}
|
||||
|
||||
recurse(world, x, y, z, refX, refY, refZ, player, tool, depth);
|
||||
}
|
||||
|
||||
private boolean isSameBlock(Block b1, Block b2) {
|
||||
|
||||
@ -38,7 +38,7 @@ public abstract class ItemInventory implements IInventory {
|
||||
}
|
||||
|
||||
public NBTTagCompound checkNBT(NBTTagCompound nbt) {
|
||||
if(!nbt.hasNoTags()) {
|
||||
if(nbt == null || !nbt.hasNoTags()) {
|
||||
Random random = new Random();
|
||||
|
||||
try {
|
||||
|
||||
@ -1475,6 +1475,7 @@ public class ModItems {
|
||||
public static Item gun_quadro;
|
||||
public static Item gun_lag;
|
||||
public static Item gun_minigun;
|
||||
public static Item gun_minigun_dual;
|
||||
public static Item gun_minigun_lacunae;
|
||||
public static Item gun_missile_launcher;
|
||||
public static Item gun_tesla_cannon;
|
||||
@ -1494,6 +1495,8 @@ public class ModItems {
|
||||
public static Item gun_aberrator_eott;
|
||||
public static Item gun_double_barrel;
|
||||
public static Item gun_double_barrel_sacred_dragon;
|
||||
|
||||
public static Item gun_charge_thrower;
|
||||
|
||||
public static Item ammo_standard;
|
||||
public static Item ammo_secret;
|
||||
@ -6422,6 +6425,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_minigun_dual, gun_minigun_dual.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_minigun_lacunae, gun_minigun_lacunae.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_missile_launcher, gun_missile_launcher.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_tesla_cannon, gun_tesla_cannon.getUnlocalizedName());
|
||||
@ -6441,6 +6445,8 @@ public class ModItems {
|
||||
GameRegistry.registerItem(gun_aberrator_eott, gun_aberrator_eott.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_double_barrel, gun_double_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_double_barrel_sacred_dragon, gun_double_barrel_sacred_dragon.getUnlocalizedName());
|
||||
|
||||
GameRegistry.registerItem(gun_charge_thrower, gun_charge_thrower.getUnlocalizedName());
|
||||
|
||||
GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName());
|
||||
|
||||
@ -150,9 +150,24 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider
|
||||
* solution (?): check equality, then just access the held stack directly. if not, pray the target reference is still accurate and use that.
|
||||
*/
|
||||
if(player.getHeldItem() != null && ItemStack.areItemStacksEqual(player.getHeldItem(), target)) {
|
||||
player.getHeldItem().setTagCompound(checkNBT(nbt));
|
||||
player.getHeldItem().setTagCompound(nbt);
|
||||
this.target = player.getHeldItem(); // just fuckin whatever
|
||||
} else {
|
||||
target.setTagCompound(checkNBT(nbt));
|
||||
target.setTagCompound(nbt);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeInventory() {
|
||||
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:block.crateClose", 1.0F, 0.8F);
|
||||
|
||||
/*
|
||||
* realistically, we only need one NBT size check (and we only *want* one because CompressedStreamTools is expensive) so we do that part only when closing
|
||||
*/
|
||||
if(player.getHeldItem() != null && ItemStack.areItemStacksEqual(player.getHeldItem(), target)) {
|
||||
player.getHeldItem().setTagCompound(checkNBT(target.getTagCompound()));
|
||||
} else {
|
||||
target.setTagCompound(checkNBT(target.getTagCompound()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
||||
this.quality = quality;
|
||||
this.lastShot = new long[cfg.length];
|
||||
for(int i = 0; i < cfg.length; i++) cfg[i].index = i;
|
||||
if(quality == WeaponQuality.A_SIDE || quality == WeaponQuality.SPECIAL) this.setCreativeTab(MainRegistry.weaponTab);
|
||||
if(quality == WeaponQuality.A_SIDE || quality == WeaponQuality.SPECIAL || quality == WeaponQuality.UTILITY) this.setCreativeTab(MainRegistry.weaponTab);
|
||||
if(quality == WeaponQuality.LEGENDARY || quality == WeaponQuality.SECRET) this.secrets.add(this);
|
||||
this.setTextureName(RefStrings.MODID + ":gun_darter");
|
||||
}
|
||||
@ -136,6 +136,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
||||
B_SIDE,
|
||||
LEGENDARY,
|
||||
SPECIAL,
|
||||
UTILITY,
|
||||
SECRET,
|
||||
DEBUG
|
||||
}
|
||||
@ -196,6 +197,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
||||
case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break;
|
||||
case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break;
|
||||
case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break;
|
||||
case UTILITY: list.add(EnumChatFormatting.GREEN + "Utility"); break;
|
||||
case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + "SECRET"); break;
|
||||
case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break;
|
||||
}
|
||||
|
||||
@ -67,6 +67,7 @@ public class GunFactory {
|
||||
XFactory10ga.init();
|
||||
XFactory35800.init();
|
||||
XFactory45.init();
|
||||
XFactoryTool.init();
|
||||
|
||||
ModItems.weapon_mod_test = new ItemEnumMulti(EnumModTest.class, true, true).setUnlocalizedName("weapon_mod_test").setMaxStackSize(1);
|
||||
ModItems.weapon_mod_generic = new ItemEnumMulti(EnumModGeneric.class, true, true).setUnlocalizedName("weapon_mod_generic").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab);
|
||||
@ -99,6 +100,8 @@ public class GunFactory {
|
||||
G10, G10_SHRAPNEL, G10_DU, G10_SLUG,
|
||||
R762_HE, BMG50_HE, G10_EXPLOSIVE,
|
||||
P45_SP, P45_FMJ, P45_JHP, P45_AP, P45_DU,
|
||||
CT_HOOK, CT_MORTAR, CT_MORTAR_CHARGE,
|
||||
NUKE_BALEFIRE,
|
||||
|
||||
//ONLY ADD NEW ENTRIES AT THE BOTTOM TO AVOID SHIFTING!
|
||||
;
|
||||
@ -124,7 +127,8 @@ public class GunFactory {
|
||||
CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_IR,
|
||||
TAU_URANIUM,
|
||||
COIL_TUNGSTEN, COIL_FERROURANIUM,
|
||||
NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE,
|
||||
NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE, NUKE_BALEFIRE,
|
||||
CT_HOOK, CT_MORTAR, CT_MORTAR_CHARGE,
|
||||
};
|
||||
|
||||
public Enum[] getOrder() {
|
||||
|
||||
@ -19,6 +19,7 @@ import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*;
|
||||
import static com.hbm.items.weapon.sedna.factory.XFactoryCatapult.*;
|
||||
import static com.hbm.items.weapon.sedna.factory.XFactoryEnergy.*;
|
||||
import static com.hbm.items.weapon.sedna.factory.XFactoryFolly.*;
|
||||
import static com.hbm.items.weapon.sedna.factory.XFactoryTool.*;
|
||||
import static com.hbm.items.weapon.sedna.factory.XFactoryTurret.*;
|
||||
import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*;
|
||||
|
||||
@ -76,6 +77,7 @@ public class GunFactoryClient {
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_dual, new ItemRenderMinigunDual());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_missile_launcher, new ItemRenderMissileLauncher());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_tesla_cannon, new ItemRenderTeslaCannon());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_laser_pistol, new ItemRenderLaserPistol(ResourceManager.laser_pistol_tex));
|
||||
@ -94,6 +96,8 @@ public class GunFactoryClient {
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_aberrator_eott, new ItemRenderEOTT());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel_sacred_dragon, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_sacred_dragon_tex));
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_charge_thrower, new ItemRenderChargeThrower());
|
||||
|
||||
//PROJECTILES
|
||||
ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
|
||||
@ -199,6 +203,7 @@ public class GunFactoryClient {
|
||||
setRendererBulk(LegoClient.RENDER_NUKE, nuke_standard, nuke_demo, nuke_high);
|
||||
nuke_tots.setRenderer(LegoClient.RENDER_GRENADE);
|
||||
nuke_hive.setRenderer(LegoClient.RENDER_HIVE);
|
||||
nuke_balefire.setRenderer(LegoClient.RENDER_NUKE_BALEFIRE);
|
||||
|
||||
setRendererBulkBeam(LegoClient.RENDER_LIGHTNING, energy_tesla, energy_tesla_overcharge, energy_tesla_ir);
|
||||
setRendererBulkBeam(LegoClient.RENDER_LIGHTNING_SUB, energy_tesla_ir_sub);
|
||||
@ -214,6 +219,10 @@ public class GunFactoryClient {
|
||||
folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE);
|
||||
|
||||
p35800.setRendererBeam(LegoClient.RENDER_CRACKLE);
|
||||
|
||||
ct_hook.setRenderer(LegoClient.RENDER_CT_HOOK);
|
||||
ct_mortar.setRenderer(LegoClient.RENDER_CT_MORTAR);
|
||||
ct_mortar_charge.setRenderer(LegoClient.RENDER_CT_MORTAR_CHARGE);
|
||||
|
||||
setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots
|
||||
|
||||
@ -270,6 +279,7 @@ public class GunFactoryClient {
|
||||
((ItemGunBaseNT) ModItems.gun_aberrator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_double_barrel) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_double_barrel_sacred_dragon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_charge_thrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
|
||||
((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
|
||||
((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
@ -277,6 +287,8 @@ public class GunFactoryClient {
|
||||
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
|
||||
((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_minigun_dual) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
|
||||
((ItemGunBaseNT) ModItems.gun_minigun_dual) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_aberrator_eott) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO_MIRROR);
|
||||
((ItemGunBaseNT) ModItems.gun_aberrator_eott) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_AMMO);
|
||||
}
|
||||
|
||||
@ -6,10 +6,13 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.entity.projectile.EntityBulletBeamBase;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.weapon.sedna.hud.HUDComponentAmmoCounter;
|
||||
import com.hbm.items.weapon.sedna.hud.HUDComponentDurabilityBar;
|
||||
import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.weapon.sedna.ItemRenderFatMan;
|
||||
import com.hbm.render.tileentity.RenderArcFurnace;
|
||||
import com.hbm.render.util.BeamPronter;
|
||||
import com.hbm.render.util.BeamPronter.EnumBeamType;
|
||||
@ -20,6 +23,7 @@ import net.minecraft.client.renderer.ActiveRenderInfo;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
@ -432,6 +436,18 @@ public class LegoClient {
|
||||
GL11.glPopMatrix();
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_NUKE_BALEFIRE = (bullet, interp) -> {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScalef(0.125F, 0.125F, 0.125F);
|
||||
GL11.glRotated(-90, 0, 1, 0);
|
||||
GL11.glTranslatef(0, -1, 1F);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ItemRenderFatMan.renderBalefire(interp);
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_HIVE = (bullet, interp) -> {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
@ -444,4 +460,162 @@ public class LegoClient {
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_CT_HOOK = (bullet, interp) -> {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * interp + 180, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
GL11.glScalef(0.125F, 0.125F, 0.125F);
|
||||
GL11.glRotated(90, 0, -1, 0);
|
||||
GL11.glRotated(180, 0, 0, 1);
|
||||
GL11.glTranslatef(0, 0, -6F);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_hook_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Hook");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
if(bullet.getThrower() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_charge_thrower && ItemGunChargeThrower.getLastHook(player.getHeldItem()) == bullet.getEntityId()) {
|
||||
renderWire(bullet, interp);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public static void renderWire(EntityBulletBaseMK4 bullet, float interp) {
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.wire_greyscale_tex);
|
||||
|
||||
double bx = bullet.prevPosX + (bullet.posX - bullet.prevPosX) * interp;
|
||||
double by = bullet.prevPosY + (bullet.posY - bullet.prevPosY) * interp;
|
||||
double bz = bullet.prevPosZ + (bullet.posZ - bullet.prevPosZ) * interp;
|
||||
|
||||
Entity thrower = bullet.getThrower();
|
||||
double x = thrower.prevPosX + (thrower.posX - thrower.prevPosX) * interp;
|
||||
double y = thrower.prevPosY + (thrower.posY - thrower.prevPosY) * interp;
|
||||
double z = thrower.prevPosZ + (thrower.posZ - thrower.prevPosZ) * interp;
|
||||
double eyaw = thrower.prevRotationYaw + (thrower.rotationYaw - thrower.prevRotationYaw) * interp;
|
||||
double epitch = thrower.prevRotationPitch + (thrower.rotationPitch - thrower.prevRotationPitch) * interp;
|
||||
|
||||
Vec3 offset = Vec3.createVectorHelper(0.125D, 0.25, -0.75);
|
||||
offset.rotateAroundX((float) -epitch / 180F * (float) Math.PI);
|
||||
offset.rotateAroundY((float) -eyaw / 180F * (float) Math.PI);
|
||||
|
||||
Vec3 target = Vec3.createVectorHelper(x - offset.xCoord, y + thrower.getEyeHeight() - offset.yCoord, z - offset.zCoord);
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
|
||||
double deltaX = target.xCoord - bx;
|
||||
double deltaY = target.yCoord - by;
|
||||
double deltaZ = target.zCoord - bz;
|
||||
Vec3 delta = Vec3.createVectorHelper(deltaX, deltaY, deltaZ);
|
||||
|
||||
Tessellator tess = Tessellator.instance;
|
||||
tess.startDrawingQuads();
|
||||
|
||||
int count = 10;
|
||||
double hang = Math.min(delta.lengthVector() / 15D, 0.5D);
|
||||
|
||||
double girth = 0.03125D;
|
||||
double hyp = Math.sqrt(delta.xCoord * delta.xCoord + delta.zCoord * delta.zCoord);
|
||||
double yaw = Math.atan2(delta.xCoord, delta.zCoord);
|
||||
double pitch = Math.atan2(delta.yCoord, hyp);
|
||||
double rotator = Math.PI * 0.5D;
|
||||
double newPitch = pitch + rotator;
|
||||
double newYaw = yaw + rotator;
|
||||
double iZ = Math.cos(yaw) * Math.cos(newPitch) * girth;
|
||||
double iX = Math.sin(yaw) * Math.cos(newPitch) * girth;
|
||||
double iY = Math.sin(newPitch) * girth;
|
||||
double jZ = Math.cos(newYaw) * girth;
|
||||
double jX = Math.sin(newYaw) * girth;
|
||||
|
||||
for(float j = 0; j < count; j++) {
|
||||
|
||||
float k = j + 1;
|
||||
|
||||
double sagJ = Math.sin(j / count * Math.PI) * hang;
|
||||
double sagK = Math.sin(k / count * Math.PI) * hang;
|
||||
double sagMean = (sagJ + sagK) / 2D;
|
||||
|
||||
double ja = j + 0.5D;
|
||||
double ix = bx + deltaX / (double)(count) * ja;
|
||||
double iy = by + deltaY / (double)(count) * ja - sagMean;
|
||||
double iz = bz + deltaZ / (double)(count) * ja;
|
||||
|
||||
int brightness = bullet.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(ix), MathHelper.floor_double(iy), MathHelper.floor_double(iz), 0);
|
||||
tess.setBrightness(brightness);
|
||||
|
||||
tess.setColorOpaque_I(0x606060);
|
||||
|
||||
drawLineSegment(tess,
|
||||
(deltaX * j / count),
|
||||
(deltaY * j / count) - sagJ,
|
||||
(deltaZ * j / count),
|
||||
(deltaX * k / count),
|
||||
(deltaY * k / count) - sagK,
|
||||
(deltaZ * k / count),
|
||||
iX, iY, iZ, jX, jZ);
|
||||
}
|
||||
|
||||
tess.draw();
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}
|
||||
|
||||
public static void drawLineSegment(Tessellator tessellator, double x, double y, double z, double a, double b, double c, double iX, double iY, double iZ, double jX, double jZ) {
|
||||
|
||||
double deltaX = a - x;
|
||||
double deltaY = b - y;
|
||||
double deltaZ = c - z;
|
||||
double length = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);
|
||||
int wrap = (int) Math.ceil(length * 8);
|
||||
|
||||
if(deltaX + deltaZ < 0) {
|
||||
wrap *= -1;
|
||||
jZ *= -1;
|
||||
jX *= -1;
|
||||
}
|
||||
|
||||
tessellator.addVertexWithUV(x + iX, y + iY, z + iZ, 0, 0);
|
||||
tessellator.addVertexWithUV(x - iX, y - iY, z - iZ, 0, 1);
|
||||
tessellator.addVertexWithUV(a - iX, b - iY, c - iZ, wrap, 1);
|
||||
tessellator.addVertexWithUV(a + iX, b + iY, c + iZ, wrap, 0);
|
||||
tessellator.addVertexWithUV(x + jX, y, z + jZ, 0, 0);
|
||||
tessellator.addVertexWithUV(x - jX, y, z - jZ, 0, 1);
|
||||
tessellator.addVertexWithUV(a - jX, b, c - jZ, wrap, 1);
|
||||
tessellator.addVertexWithUV(a + jX, b, c + jZ, wrap, 0);
|
||||
}
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_CT_MORTAR = (bullet, interp) -> {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScalef(0.125F, 0.125F, 0.125F);
|
||||
GL11.glRotated(90, 0, -1, 0);
|
||||
GL11.glRotated(180, 0, 0, 1);
|
||||
GL11.glTranslatef(0, 0, -6F);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_mortar_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Mortar");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_CT_MORTAR_CHARGE = (bullet, interp) -> {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScalef(0.125F, 0.125F, 0.125F);
|
||||
GL11.glRotated(90, 0, -1, 0);
|
||||
GL11.glRotated(180, 0, 0, 1);
|
||||
GL11.glTranslatef(0, 0, -6F);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_mortar_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Mortar");
|
||||
ResourceManager.charge_thrower.renderPart("Oomph");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
};
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.handler.threading.PacketThreading;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.Receiver;
|
||||
import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower;
|
||||
import com.hbm.items.weapon.sedna.impl.ItemGunStinger;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||
import com.hbm.items.weapon.sedna.mags.IMagazine;
|
||||
@ -22,6 +23,7 @@ import com.hbm.util.EntityDamageUtil;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -941,6 +943,35 @@ public class Orchestras {
|
||||
}
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_MINIGUN_DUAL = (stack, ctx) -> {
|
||||
EntityLivingBase entity = ctx.entity;
|
||||
if(entity.worldObj.isRemote) return;
|
||||
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
|
||||
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
|
||||
|
||||
if(type == AnimType.CYCLE) {
|
||||
if(timer == 0) {
|
||||
int index = ctx.configIndex == 0 ? -1 : 1;
|
||||
int rounds = WeaponModManager.hasUpgrade(stack, ctx.configIndex, WeaponModManager.ID_MINIGUN_SPEED) ? 3 : 1;
|
||||
for(int i = 0; i < rounds; i++) {
|
||||
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory);
|
||||
if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.5D * index, 0, 0.18, -0.12 * index, 0.01, (float)entity.getRNG().nextGaussian() * 15F, (float)entity.getRNG().nextGaussian() * 15F, casing.getName());
|
||||
}
|
||||
}
|
||||
if(timer == (WeaponModManager.hasUpgrade(stack, 0, 207) ? 3 : 1)) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F);
|
||||
}
|
||||
if(type == AnimType.CYCLE_DRY) {
|
||||
if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F);
|
||||
if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F);
|
||||
}
|
||||
if(type == AnimType.RELOAD) {
|
||||
if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F);
|
||||
}
|
||||
if(type == AnimType.INSPECT) {
|
||||
if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F);
|
||||
}
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_MISSILE_LAUNCHER = (stack, ctx) -> {
|
||||
EntityLivingBase entity = ctx.entity;
|
||||
if(entity.worldObj.isRemote) return;
|
||||
@ -1384,4 +1415,21 @@ public class Orchestras {
|
||||
if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F);
|
||||
}
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_CHARGE_THROWER = (stack, ctx) -> {
|
||||
EntityLivingBase entity = ctx.entity;
|
||||
if(entity.worldObj.isRemote) return;
|
||||
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
|
||||
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
|
||||
|
||||
if(type == AnimType.CYCLE_DRY) {
|
||||
Entity e = entity.worldObj.getEntityByID(ItemGunChargeThrower.getLastHook(stack));
|
||||
if(timer == 0 && e == null) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F);
|
||||
}
|
||||
|
||||
if(type == AnimType.RELOAD) {
|
||||
if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertRocket", 1F, 1F);
|
||||
if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 1F, 1F);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.hbm.items.weapon.sedna.Crosshair;
|
||||
import com.hbm.items.weapon.sedna.GunConfig;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.Receiver;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||
@ -96,6 +97,28 @@ public class XFactory762mm {
|
||||
.setupStandardConfiguration()
|
||||
.anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN)
|
||||
).setUnlocalizedName("gun_minigun_lacunae");
|
||||
ModItems.gun_minigun_dual = new ItemGunBaseNT(WeaponQuality.DEBUG,
|
||||
new GunConfig()
|
||||
.dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
.dmg(6F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.calShoot", 1.0F, 1.0F)
|
||||
.mag(new MagazineBelt().addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du, r762_he))
|
||||
.offset(1, -0.0625 * 2.5, 0.25D)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_MINIGUN))
|
||||
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
|
||||
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
|
||||
.anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN_DUAL),
|
||||
new GunConfig()
|
||||
.dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE)
|
||||
.rec(new Receiver(0)
|
||||
.dmg(6F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.calShoot", 1.0F, 1.0F)
|
||||
.mag(new MagazineBelt().addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du, r762_he))
|
||||
.offset(1, -0.0625 * 2.5, -0.25D)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_MINIGUN))
|
||||
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
|
||||
.decider(LAMBDA_SECOND_MINIGUN)
|
||||
.anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN_DUAL)
|
||||
).setUnlocalizedName("gun_minigun_dual");
|
||||
|
||||
ModItems.gun_mas36 = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig()
|
||||
.dura(5_000).draw(20).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE)
|
||||
@ -109,6 +132,15 @@ public class XFactory762mm {
|
||||
).setUnlocalizedName("gun_mas36");
|
||||
}
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SECOND_MINIGUN = (stack, ctx) -> {
|
||||
int index = ctx.configIndex;
|
||||
GunState lastState = ItemGunBaseNT.getState(stack, index);
|
||||
GunStateDecider.deciderStandardFinishDraw(stack, lastState, index);
|
||||
GunStateDecider.deciderStandardClearJam(stack, lastState, index);
|
||||
GunStateDecider.deciderStandardReload(stack, ctx, lastState, 0, index);
|
||||
GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; });
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
|
||||
Lego.handleStandardSmoke(ctx.entity, stack, 1500, 0.075D, 1.1D, 0);
|
||||
};
|
||||
|
||||
@ -8,6 +8,8 @@ import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.BlockMutatorBalefire;
|
||||
import com.hbm.explosion.vanillant.standard.BlockMutatorFire;
|
||||
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth;
|
||||
import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon;
|
||||
@ -44,6 +46,7 @@ public class XFactoryCatapult {
|
||||
public static BulletConfig nuke_high;
|
||||
public static BulletConfig nuke_tots;
|
||||
public static BulletConfig nuke_hive;
|
||||
public static BulletConfig nuke_balefire;
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_NUKE_STANDARD = (bullet, mop) -> {
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return;
|
||||
@ -64,9 +67,9 @@ public class XFactoryCatapult {
|
||||
if(bullet.isDead) return;
|
||||
bullet.setDead();
|
||||
|
||||
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10);
|
||||
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 15);
|
||||
vnt.setBlockAllocator(new BlockAllocatorStandard(64));
|
||||
vnt.setBlockProcessor(new BlockProcessorStandard());
|
||||
vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorFire()));
|
||||
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F));
|
||||
vnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||
vnt.explode();
|
||||
@ -83,6 +86,27 @@ public class XFactoryCatapult {
|
||||
spawnMush(bullet, mop);
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_NUKE_BALEFIRE = (bullet, mop) -> {
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return;
|
||||
if(bullet.isDead) return;
|
||||
bullet.setDead();
|
||||
|
||||
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10);
|
||||
vnt.setBlockAllocator(new BlockAllocatorStandard(64));
|
||||
vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBalefire()));
|
||||
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F));
|
||||
vnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||
vnt.explode();
|
||||
|
||||
incrementRad(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 1.5F);
|
||||
|
||||
bullet.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "muke");
|
||||
data.setBoolean("balefire", true);
|
||||
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord), new TargetPoint(bullet.dimension, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 250));
|
||||
};
|
||||
|
||||
public static void incrementRad(World world, double posX, double posY, double posZ, float mult) {
|
||||
for(int i = -2; i <= 2; i++) { for(int j = -2; j <= 2; j++) {
|
||||
if(Math.abs(i) + Math.abs(j) < 4) {
|
||||
@ -136,12 +160,13 @@ public class XFactoryCatapult {
|
||||
nuke_high = new BulletConfig().setItem(EnumAmmo.NUKE_HIGH).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_HIGH);
|
||||
nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setDamage(0.35F).setOnImpact(LAMBDA_NUKE_TINYTOT);
|
||||
nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.25F).setOnImpact(LAMBDA_NUKE_HIVE);
|
||||
nuke_balefire = new BulletConfig().setItem(EnumAmmo.NUKE_BALEFIRE).setDamage(2.5F).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_BALEFIRE);
|
||||
|
||||
ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
||||
.dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false)
|
||||
.dura(300).draw(20).inspect(30).reloadChangeType(true).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false)
|
||||
.rec(new Receiver(0)
|
||||
.dmg(100F).spreadHipfire(0F).delay(10).reload(57).jam(40).sound("hbm:weapon.fire.fatman", 1.0F, 1.0F)
|
||||
.mag(new MagazineSingleReload(0, 1).addConfigs(nuke_standard, nuke_demo, nuke_high, nuke_tots, nuke_hive))
|
||||
.mag(new MagazineSingleReload(0, 1).addConfigs(nuke_standard, nuke_demo, nuke_high, nuke_tots, nuke_hive, nuke_balefire))
|
||||
.offset(1, -0.0625 * 1.5, -0.1875D).offsetScoped(1, -0.0625 * 1.5, -0.125D)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_FATMAN))
|
||||
.setupStandardConfiguration()
|
||||
|
||||
@ -0,0 +1,126 @@
|
||||
package com.hbm.items.weapon.sedna.factory;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.explosion.vanillant.standard.BlockAllocatorBulkie;
|
||||
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.BlockMutatorDebris;
|
||||
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth;
|
||||
import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon;
|
||||
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||
import com.hbm.items.weapon.sedna.Crosshair;
|
||||
import com.hbm.items.weapon.sedna.GunConfig;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.Receiver;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||
import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower;
|
||||
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
||||
import com.hbm.particle.helper.ExplosionCreator;
|
||||
import com.hbm.render.anim.BusAnimation;
|
||||
import com.hbm.render.anim.BusAnimationSequence;
|
||||
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||
import com.hbm.util.Vec3NT;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
|
||||
public class XFactoryTool {
|
||||
|
||||
public static BulletConfig ct_hook;
|
||||
public static BulletConfig ct_mortar;
|
||||
public static BulletConfig ct_mortar_charge;
|
||||
|
||||
public static Consumer<Entity> LAMBDA_SET_HOOK = (entity) -> {
|
||||
EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity;
|
||||
if(!bullet.worldObj.isRemote && bullet.ticksExisted < 2 && bullet.getThrower() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_charge_thrower) {
|
||||
ItemGunChargeThrower.setLastHook(player.getHeldItem(), bullet.getEntityId());
|
||||
}
|
||||
}
|
||||
bullet.ignoreFrustumCheck = true;
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_HOOK = (bullet, mop) -> {
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
Vec3NT vec = new Vec3NT(-bullet.motionX, -bullet.motionY, -bullet.motionZ).normalizeSelf().multiply(0.05);
|
||||
bullet.setPosition(mop.hitVec.xCoord + vec.xCoord, mop.hitVec.yCoord + vec.yCoord, mop.hitVec.zCoord + vec.zCoord);
|
||||
bullet.getStuck(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit);
|
||||
}
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_MORTAR = (bullet, mop) -> {
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return;
|
||||
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5, bullet.getThrower());
|
||||
vnt.setBlockAllocator(new BlockAllocatorBulkie(60, 8));
|
||||
vnt.setBlockProcessor(new BlockProcessorStandard());
|
||||
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage).setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent));
|
||||
vnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||
vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F));
|
||||
vnt.explode();
|
||||
};
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_MORTAR_CHARGE = (bullet, mop) -> {
|
||||
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return;
|
||||
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 15, bullet.getThrower());
|
||||
vnt.setBlockAllocator(new BlockAllocatorStandard());
|
||||
vnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(ModBlocks.block_slag, 1)));
|
||||
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage).setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent));
|
||||
vnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||
ExplosionCreator.composeEffectSmall(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord);
|
||||
vnt.explode();
|
||||
};
|
||||
|
||||
public static void init() {
|
||||
|
||||
ct_hook = new BulletConfig().setItem(EnumAmmo.CT_HOOK).setRenderRotations(false).setLife(6_000).setVel(3F).setGrav(0.035D).setDoesPenetrate(true).setDamageFalloffByPen(false)
|
||||
.setOnUpdate(LAMBDA_SET_HOOK).setOnImpact(LAMBDA_HOOK);
|
||||
ct_mortar = new BulletConfig().setItem(EnumAmmo.CT_MORTAR).setLife(200).setVel(3F).setGrav(0.035D)
|
||||
.setOnImpact(LAMBDA_MORTAR);
|
||||
ct_mortar_charge = new BulletConfig().setItem(EnumAmmo.CT_MORTAR_CHARGE).setLife(200).setVel(3F).setGrav(0.035D)
|
||||
.setOnImpact(LAMBDA_MORTAR_CHARGE);
|
||||
|
||||
ModItems.gun_charge_thrower = new ItemGunChargeThrower(WeaponQuality.UTILITY, new GunConfig()
|
||||
.dura(3_000).draw(20).inspect(31).reloadChangeType(true).hideCrosshair(false).crosshair(Crosshair.L_CIRCUMFLEX)
|
||||
.rec(new Receiver(0)
|
||||
.dmg(5F).delay(4).dry(10).auto(true).spread(0F).spreadHipfire(0F).reload(60).jam(55).sound("hbm:weapon.fire.grenade", 1.0F, 1.0F)
|
||||
.mag(new MagazineFullReload(0, 1).addConfigs(ct_hook, ct_mortar, ct_mortar_charge))
|
||||
.offset(1, -0.0625 * 2.5, -0.25D)
|
||||
.setupStandardFire().recoil(LAMBDA_RECOIL_CT))
|
||||
.setupStandardConfiguration()
|
||||
.anim(LAMBDA_CT_ANIMS).orchestra(Orchestras.ORCHESTRA_CHARGE_THROWER)
|
||||
).setUnlocalizedName("gun_charge_thrower");
|
||||
}
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_CT = (stack, ctx) -> {
|
||||
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
|
||||
};
|
||||
|
||||
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CT_ANIMS = (stack, type) -> {
|
||||
switch(type) {
|
||||
case EQUIP: return new BusAnimation()
|
||||
.addBus("EQUIP", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));
|
||||
case CYCLE: return new BusAnimation()
|
||||
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL));
|
||||
case RELOAD: return new BusAnimation()
|
||||
.addBus("RAISE", new BusAnimationSequence().addPos(-45, 0, 0, 500, IType.SIN_FULL).hold(2000).addPos(0, 0, 0, 500, IType.SIN_FULL))
|
||||
.addBus("AMMO", new BusAnimationSequence().setPos(0, -10, -5).hold(500).addPos(0, 0, 5, 750, IType.SIN_FULL).addPos(0, 0, 0, 500, IType.SIN_UP).hold(4000))
|
||||
.addBus("TWIST", new BusAnimationSequence().setPos(0, 0, 25).hold(2000).addPos(0, 0, 0, 150));
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
package com.hbm.items.weapon.sedna.impl;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.extprop.HbmPlayerProps;
|
||||
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||
import com.hbm.items.weapon.sedna.GunConfig;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.factory.XFactoryTool;
|
||||
import com.hbm.util.ArmorUtil;
|
||||
import com.hbm.util.Vec3NT;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemGunChargeThrower extends ItemGunBaseNT {
|
||||
|
||||
public static final String KEY_LASTHOOK = "lasthook";
|
||||
|
||||
public ItemGunChargeThrower(WeaponQuality quality, GunConfig... cfg) {
|
||||
super(quality, cfg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) {
|
||||
super.onUpdate(stack, world, entity, slot, isHeld);
|
||||
|
||||
if(this.getState(stack, 0) == GunState.RELOADING) {
|
||||
if(this.getLastHook(stack) != -1) this.setLastHook(stack, -1);
|
||||
}
|
||||
|
||||
if(isHeld && entity instanceof EntityPlayer) {
|
||||
Entity e = world.getEntityByID(this.getLastHook(stack));
|
||||
if(e != null && !e.isDead && e instanceof EntityBulletBaseMK4 && ((EntityBulletBaseMK4) e).config == XFactoryTool.ct_hook && ((EntityBulletBaseMK4) e).velocity < 0.01) {
|
||||
EntityPlayer player = (EntityPlayer) entity;
|
||||
Vec3NT vec = new Vec3NT(e.posX - player.posX, e.posY - player.posY - player.getEyeHeight(), e.posZ - player.posZ);
|
||||
double line = vec.lengthVector();
|
||||
if(HbmPlayerProps.getData((EntityPlayer) entity).getKeyPressed(EnumKeybind.GUN_PRIMARY)) {
|
||||
vec.normalizeSelf().multiply(0.1);
|
||||
player.motionX += vec.xCoord;
|
||||
player.motionY += vec.yCoord + 0.04;
|
||||
player.motionZ += vec.zCoord;
|
||||
if(!world.isRemote && line < 2) e.setDead();
|
||||
} else if(!HbmPlayerProps.getData((EntityPlayer) entity).getKeyPressed(EnumKeybind.GUN_SECONDARY)) {
|
||||
Vec3NT nextPos = new Vec3NT(player.posX + player.motionX, player.posY + player.getEyeHeight() + player.motionY, player.posZ + player.motionZ);
|
||||
Vec3NT delta = new Vec3NT(e.posX - nextPos.xCoord, e.posY - nextPos.yCoord, e.posZ - nextPos.zCoord);
|
||||
if(delta.lengthVector() > line) {
|
||||
delta.normalizeSelf().multiply(line);
|
||||
Vec3NT newNext = new Vec3NT(e.posX - delta.xCoord, e.posY - delta.yCoord, e.posZ - delta.zCoord);
|
||||
Vec3NT vel = new Vec3NT(newNext.xCoord - player.posX, newNext.yCoord - player.posY - player.getEyeHeight(), newNext.zCoord - player.posZ);
|
||||
if(vel.lengthVector() < 3) {
|
||||
player.motionX = vel.xCoord;
|
||||
player.motionY = vel.yCoord;
|
||||
player.motionZ = vel.zCoord;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
player.motionX *= 0.5;
|
||||
player.motionY *= 0.5;
|
||||
player.motionZ *= 0.5;
|
||||
}
|
||||
|
||||
if(player.motionY > -0.1) player.fallDistance = 0;
|
||||
ArmorUtil.resetFlightTime((EntityPlayer)entity);
|
||||
}
|
||||
} else {
|
||||
if(this.getLastHook(stack) != -1) this.setLastHook(stack, -1);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getLastHook(ItemStack stack) { return getValueInt(stack, KEY_LASTHOOK); }
|
||||
public static void setLastHook(ItemStack stack, int value) { setValueInt(stack, KEY_LASTHOOK, value); }
|
||||
}
|
||||
@ -127,15 +127,15 @@ public class WeaponModManager {
|
||||
|
||||
new WeaponModDefinition(EnumModSpecial.SPEEDLOADER).addMod(ModItems.gun_liberator, new WeaponModLiberatorSpeedloader(200));
|
||||
new WeaponModDefinition(EnumModSpecial.SILENCER).addMod(new Item[] {ModItems.gun_am180, ModItems.gun_uzi, ModItems.gun_uzi_akimbo, ModItems.gun_g3}, new WeaponModSilencer(ID_SILENCER));
|
||||
new WeaponModDefinition(EnumModSpecial.SCOPE).addMod(new Item[] {ModItems.gun_heavy_revolver, ModItems.gun_g3, ModItems.gun_mas36}, new WeaponModScope(ID_SCOPE));
|
||||
new WeaponModDefinition(EnumModSpecial.SCOPE).addMod(new Item[] {ModItems.gun_heavy_revolver, ModItems.gun_g3, ModItems.gun_mas36, ModItems.gun_charge_thrower}, new WeaponModScope(ID_SCOPE));
|
||||
new WeaponModDefinition(EnumModSpecial.SAW)
|
||||
.addMod(new Item[] {ModItems.gun_maresleg, ModItems.gun_double_barrel}, new WeaponModSawedOff(ID_SAWED_OFF))
|
||||
.addMod(ModItems.gun_panzerschreck, new WeaponModPanzerschreckSawedOff(ID_NO_SHIELD))
|
||||
.addMod(new Item[] {ModItems.gun_g3, ModItems.gun_g3_zebra}, new WeapnModG3SawedOff(ID_NO_STOCK));
|
||||
new WeaponModDefinition(EnumModSpecial.GREASEGUN).addMod(ModItems.gun_greasegun, new WeaponModGreasegun(ID_GREASEGUN_CLEAN));
|
||||
new WeaponModDefinition(EnumModSpecial.SLOWDOWN).addMod(ModItems.gun_minigun, new WeaponModSlowdown(207));
|
||||
new WeaponModDefinition(EnumModSpecial.SLOWDOWN).addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModSlowdown(207));
|
||||
new WeaponModDefinition(EnumModSpecial.SPEEDUP)
|
||||
.addMod(ModItems.gun_minigun, new WeaponModMinigunSpeedup(ID_MINIGUN_SPEED))
|
||||
.addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModMinigunSpeedup(ID_MINIGUN_SPEED))
|
||||
.addMod(new Item[] {ModItems.gun_autoshotgun, ModItems.gun_autoshotgun_shredder}, new WeaponModShredderSpeedup(209));
|
||||
new WeaponModDefinition(EnumModSpecial.CHOKE).addMod(new Item[] {ModItems.gun_pepperbox, ModItems.gun_maresleg, ModItems.gun_double_barrel, ModItems.gun_liberator, ModItems.gun_spas12}, new WeaponModChoke(210));
|
||||
new WeaponModDefinition(EnumModSpecial.FURNITURE_GREEN).addMod(ModItems.gun_g3, new WeaponModPolymerFurniture(ID_FURNITURE_GREEN));
|
||||
@ -177,13 +177,13 @@ public class WeaponModManager {
|
||||
new WeaponModDefinition(EnumModCaliber.R556)
|
||||
.addMod(ModItems.gun_henry, new WeaponModCaliber(350, 10, 10F, r556))
|
||||
.addMod(ModItems.gun_carbine, new WeaponModCaliber(351, 20, 15F, r556))
|
||||
.addMod(ModItems.gun_minigun, new WeaponModCaliber(352, 0, 6F, r556));
|
||||
.addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModCaliber(352, 0, 6F, r556));
|
||||
new WeaponModDefinition(EnumModCaliber.R762)
|
||||
.addMod(ModItems.gun_henry, new WeaponModCaliber(360, 8, 10F, r762))
|
||||
.addMod(ModItems.gun_g3, new WeaponModCaliber(361, 24, 5F, r762));
|
||||
new WeaponModDefinition(EnumModCaliber.BMG50)
|
||||
.addMod(ModItems.gun_henry, new WeaponModCaliber(370, 5, 10F, bmg50))
|
||||
.addMod(ModItems.gun_minigun, new WeaponModCaliber(371, 0, 6F, bmg50));
|
||||
.addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModCaliber(371, 0, 6F, bmg50));
|
||||
}
|
||||
|
||||
public static final int ID_SILENCER = 201;
|
||||
|
||||
@ -13,10 +13,9 @@ public class WeaponModScope extends WeaponModBase {
|
||||
|
||||
@Override
|
||||
public <T> T eval(T base, ItemStack gun, String key, Object parent) {
|
||||
|
||||
if(key == GunConfig.O_SCOPETEXTURE) {
|
||||
return (T) XFactory44.scope_lilmac;
|
||||
}
|
||||
|
||||
if(key == GunConfig.O_SCOPETEXTURE) return (T) XFactory44.scope_lilmac;
|
||||
if(key == GunConfig.B_HIDECROSSHAIR) return cast(true, base); // just in case
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
@ -299,8 +299,8 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
}
|
||||
|
||||
if(WorldConfig.dudStructure > 0 && rand.nextInt(WorldConfig.dudStructure) == 0) {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
int x = i + 8 + rand.nextInt(16);
|
||||
int z = j + 8 + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z);
|
||||
|
||||
new Dud().generate(world, rand, x, y, z);
|
||||
|
||||
@ -279,6 +279,9 @@ public class ResourceManager {
|
||||
public static final IModelCustom bomb_multi = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/BombGeneric.obj"));
|
||||
public static final IModelCustom fstbmb = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/fstbmb.obj")).asVBO();
|
||||
public static final IModelCustom dud_balefire = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/dud_balefire.obj")).asVBO();
|
||||
public static final IModelCustom dud_conventional = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/dud_conventional.obj")).asVBO();
|
||||
public static final IModelCustom dud_nuke = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/dud_nuke.obj")).asVBO();
|
||||
public static final IModelCustom dud_salted = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/dud_salted.obj")).asVBO();
|
||||
|
||||
//Satellites
|
||||
public static final IModelCustom sat_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_base.obj"));
|
||||
@ -731,6 +734,9 @@ public class ResourceManager {
|
||||
public static final ResourceLocation n45_chain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_chain.png");
|
||||
public static final ResourceLocation fstbmb_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/fstbmb.png");
|
||||
public static final ResourceLocation dud_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/dud_balefire.png");
|
||||
public static final ResourceLocation dud_conventional_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/dud_conventional.png");
|
||||
public static final ResourceLocation dud_nuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/dud_nuke.png");
|
||||
public static final ResourceLocation dud_salted_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/dud_salted.png");
|
||||
|
||||
//Satellites
|
||||
public static final ResourceLocation sat_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_base.png");
|
||||
@ -886,6 +892,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom double_barrel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/sacred_dragon.obj")).asVBO();
|
||||
public static final IModelCustom aberrator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/aberrator.obj")).asVBO();
|
||||
public static final IModelCustom mas36 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mas36.obj")).asVBO();
|
||||
public static final IModelCustom charge_thrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/charge_thrower.obj")).asVBO();
|
||||
|
||||
public static final HashMap<String, BusAnimation> spas_12_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/spas12.json"));
|
||||
public static final HashMap<String, BusAnimation> congolake_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/congolake.json"));
|
||||
@ -994,6 +1001,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png");
|
||||
public static final ResourceLocation minigun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun.png");
|
||||
public static final ResourceLocation minigun_lacunae_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun_lacunae.png");
|
||||
public static final ResourceLocation minigun_dual_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun_dual.png");
|
||||
public static final ResourceLocation missile_launcher_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/missile_launcher.png");
|
||||
public static final ResourceLocation tesla_cannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tesla_cannon.png");
|
||||
public static final ResourceLocation laser_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/laser_pistol.png");
|
||||
@ -1003,6 +1011,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation tau_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tau.png");
|
||||
public static final ResourceLocation fatman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman.png");
|
||||
public static final ResourceLocation fatman_mininuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman_mininuke.png");
|
||||
public static final ResourceLocation fatman_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman_balefire.png");
|
||||
public static final ResourceLocation lasrifle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lasrifle.png");
|
||||
public static final ResourceLocation lasrifle_mods_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lasrifle_mods.png");
|
||||
public static final ResourceLocation hangman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hangman.png");
|
||||
@ -1012,6 +1021,10 @@ public class ResourceManager {
|
||||
public static final ResourceLocation aberrator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/aberrator.png");
|
||||
public static final ResourceLocation eott_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/eott.png");
|
||||
public static final ResourceLocation mas36_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/mas36.png");
|
||||
public static final ResourceLocation charge_thrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower.png");
|
||||
public static final ResourceLocation charge_thrower_hook_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower_hook.png");
|
||||
public static final ResourceLocation charge_thrower_mortar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower_mortar.png");
|
||||
public static final ResourceLocation charge_thrower_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/charge_thrower_rocket.png");
|
||||
|
||||
public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png");
|
||||
|
||||
|
||||
@ -0,0 +1,164 @@
|
||||
package com.hbm.render.item.weapon.sedna;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.factory.XFactoryTool;
|
||||
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
||||
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.anim.HbmAnimations;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemRenderChargeThrower extends ItemRenderWeaponBase {
|
||||
|
||||
@Override
|
||||
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 0F : -0.5F; }
|
||||
|
||||
@Override
|
||||
public float getViewFOV(ItemStack stack, float fov) {
|
||||
float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp;
|
||||
return fov * (1 - aimingProgress * (isScoped(stack) ? 0.66F : 0.33F));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupFirstPerson(ItemStack stack) {
|
||||
GL11.glTranslated(0, 0, 0.875);
|
||||
|
||||
float offset = 0.8F;
|
||||
float zoom = 0.5F;
|
||||
|
||||
if(isScoped(stack)) standardAimingTransform(stack,
|
||||
-1.5F * offset, -1.25F * offset, 3.5F * offset,
|
||||
-0.15625, -6.5 / 8D, 1.6875);
|
||||
else standardAimingTransform(stack,
|
||||
-1.5F * offset, -1.25F * offset, 3.5F * offset,
|
||||
-1.5F * zoom, -1.25F * zoom, 3.5F * zoom);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFirstPerson(ItemStack stack) {
|
||||
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||
boolean usingScope = this.isScoped(stack) && gun.aimingProgress == 1 && gun.prevAimingProgress == 1;
|
||||
MagazineFullReload mag = (MagazineFullReload) gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack);
|
||||
|
||||
if(usingScope) {
|
||||
double scale = 3.5D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glTranslated(-0.5, -1.5, -4);
|
||||
} else {
|
||||
double scale = 0.5D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
}
|
||||
|
||||
boolean reloading = HbmAnimations.getRelevantAnim(0) != null && HbmAnimations.getRelevantAnim(0).animation.getBus("AMMO") != null;
|
||||
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
|
||||
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
|
||||
double[] raise = HbmAnimations.getRelevantTransformation("RAISE");
|
||||
double[] ammo = HbmAnimations.getRelevantTransformation("AMMO");
|
||||
double[] twist = HbmAnimations.getRelevantTransformation("TWIST");
|
||||
|
||||
GL11.glTranslated(0, 0, -7);
|
||||
GL11.glRotated(equip[0], -1, 0, 0);
|
||||
GL11.glTranslated(0, 0, 7);
|
||||
|
||||
GL11.glTranslated(0, -7, 4);
|
||||
GL11.glRotated(raise[0], 1, 0, 0);
|
||||
GL11.glTranslated(0, 7, -4);
|
||||
|
||||
GL11.glTranslated(recoil[0], recoil[1], recoil[2]);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Gun");
|
||||
if(isScoped(stack) && !usingScope) ResourceManager.charge_thrower.renderPart("Scope");
|
||||
|
||||
if(mag.getAmount(stack, null) > 0 || reloading) {
|
||||
|
||||
GL11.glTranslated(ammo[0], ammo[1], ammo[2]);
|
||||
GL11.glRotated(twist[2], 0, 0, 1);
|
||||
|
||||
if(mag.getType(stack, null) == XFactoryTool.ct_hook) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_hook_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Hook");
|
||||
}
|
||||
if(mag.getType(stack, null) == XFactoryTool.ct_mortar) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_mortar_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Mortar");
|
||||
}
|
||||
if(mag.getType(stack, null) == XFactoryTool.ct_mortar_charge) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_mortar_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Mortar");
|
||||
ResourceManager.charge_thrower.renderPart("Oomph");
|
||||
}
|
||||
//Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_rocket_tex);
|
||||
//ResourceManager.charge_thrower.renderPart("Rocket");
|
||||
}
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupThirdPerson(ItemStack stack) {
|
||||
super.setupThirdPerson(stack);
|
||||
double scale = 1.5D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glTranslated(0.75, 1, 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupInv(ItemStack stack) {
|
||||
super.setupInv(stack);
|
||||
double scale = 1.25D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glRotated(25, 1, 0, 0);
|
||||
GL11.glRotated(45, 0, 1, 0);
|
||||
GL11.glTranslated(0, 0, -0.625);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupModTable(ItemStack stack) {
|
||||
double scale = -8.5D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glTranslated(0, 0, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderOther(ItemStack stack, ItemRenderType type) {
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Gun");
|
||||
if(isScoped(stack)) ResourceManager.charge_thrower.renderPart("Scope");
|
||||
|
||||
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||
MagazineFullReload mag = (MagazineFullReload) gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack);
|
||||
|
||||
if(mag.getAmount(stack, null) > 0) {
|
||||
|
||||
if(mag.getType(stack, null) == XFactoryTool.ct_hook) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_hook_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Hook");
|
||||
}
|
||||
if(mag.getType(stack, null) == XFactoryTool.ct_mortar) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_mortar_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Mortar");
|
||||
}
|
||||
if(mag.getType(stack, null) == XFactoryTool.ct_mortar_charge) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.charge_thrower_mortar_tex);
|
||||
ResourceManager.charge_thrower.renderPart("Mortar");
|
||||
ResourceManager.charge_thrower.renderPart("Oomph");
|
||||
}
|
||||
}
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
public boolean isScoped(ItemStack stack) {
|
||||
return WeaponModManager.hasUpgrade(stack, 0, WeaponModManager.ID_SCOPE);
|
||||
}
|
||||
}
|
||||
@ -3,8 +3,10 @@ package com.hbm.render.item.weapon.sedna;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.factory.XFactoryCatapult;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.anim.HbmAnimations;
|
||||
import com.hbm.render.util.RenderMiscEffects;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -34,7 +36,7 @@ public class ItemRenderFatMan extends ItemRenderWeaponBase {
|
||||
|
||||
@Override
|
||||
public void renderFirstPerson(ItemStack stack) {
|
||||
|
||||
|
||||
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_tex);
|
||||
double scale = 0.5D;
|
||||
@ -81,10 +83,9 @@ public class ItemRenderFatMan extends ItemRenderWeaponBase {
|
||||
GL11.glPopMatrix();
|
||||
|
||||
if(isLoaded || nuke[0] != 0 || nuke[1] != 0 || nuke[2] != 0) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_mininuke_tex);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(nuke[0], nuke[1], nuke[2]);
|
||||
ResourceManager.fatman.renderPart("MiniNuke");
|
||||
renderNuke(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getType(stack, null));
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@ -132,8 +133,71 @@ public class ItemRenderFatMan extends ItemRenderWeaponBase {
|
||||
ResourceManager.fatman.renderPart("Lid");
|
||||
if(!isLoaded) GL11.glTranslated(0, 0, 3);
|
||||
ResourceManager.fatman.renderPart("Piston");
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_mininuke_tex);
|
||||
if(isLoaded) ResourceManager.fatman.renderPart("MiniNuke");
|
||||
if(isLoaded) renderNuke(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getType(stack, null));
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
public void renderNuke(Object type) {
|
||||
if(type == XFactoryCatapult.nuke_balefire) {
|
||||
renderBalefire(interp);
|
||||
} else {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_mininuke_tex);
|
||||
ResourceManager.fatman.renderPart("MiniNuke");
|
||||
}
|
||||
}
|
||||
|
||||
public static void renderBalefire(float interp) {
|
||||
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
mc.renderEngine.bindTexture(ResourceManager.fatman_balefire_tex);
|
||||
ResourceManager.fatman.renderPart("MiniNuke");
|
||||
mc.renderEngine.bindTexture(RenderMiscEffects.glintBF);
|
||||
mc.entityRenderer.disableLightmap(interp);
|
||||
|
||||
float scale = 2F;
|
||||
float r = 0F;
|
||||
float g = 0.8F;
|
||||
float b = 0.15F;
|
||||
float speed = -6;
|
||||
float glintColor = 0.76F;
|
||||
int layers = 3;
|
||||
|
||||
GL11.glPushMatrix();
|
||||
float offset = mc.thePlayer.ticksExisted + interp;
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
GL11.glDepthFunc(GL11.GL_EQUAL);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
|
||||
GL11.glDepthMask(false);
|
||||
|
||||
for(int k = 0; k < layers; ++k) {
|
||||
|
||||
GL11.glColor4f(r * glintColor, g * glintColor, b * glintColor, 1.0F);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
|
||||
float movement = offset * (0.001F + (float) k * 0.003F) * speed;
|
||||
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
GL11.glRotatef(30.0F - k * 60.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(0F, movement, 0F);
|
||||
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
|
||||
ResourceManager.fatman.renderPart("MiniNuke");
|
||||
}
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glDepthFunc(GL11.GL_LEQUAL);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
mc.entityRenderer.enableLightmap(interp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,6 +59,7 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase {
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
|
||||
ResourceManager.minigun.renderPart("Gun");
|
||||
ResourceManager.minigun.renderPart("Grip");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotated(rotate[2], 0, 0, 1);
|
||||
@ -124,7 +125,9 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase {
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
|
||||
ResourceManager.minigun.renderAll();
|
||||
ResourceManager.minigun.renderPart("Gun");
|
||||
ResourceManager.minigun.renderPart("Grip");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,192 @@
|
||||
package com.hbm.render.item.weapon.sedna;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.anim.HbmAnimations;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemRenderMinigunDual extends ItemRenderWeaponBase {
|
||||
|
||||
@Override public boolean isAkimbo() { return true; }
|
||||
|
||||
@Override
|
||||
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; }
|
||||
|
||||
@Override
|
||||
public float getViewFOV(ItemStack stack, float fov) {
|
||||
float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp;
|
||||
return fov * (1 - aimingProgress * 0.33F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupFirstPerson(ItemStack stack) {
|
||||
GL11.glTranslated(0, 0, 0.875);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFirstPerson(ItemStack stack) {
|
||||
|
||||
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||
|
||||
float offset = 0.8F;
|
||||
|
||||
for(int i = -1; i <= 1; i += 2) {
|
||||
int index = i == -1 ? 0 : 1;
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_dual_tex);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
standardAimingTransform(stack, -2.75F * offset * i, -1.75F * offset, 2.5F * offset, 0, 0, 0);
|
||||
|
||||
double scale = 0.375D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
|
||||
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index);
|
||||
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index);
|
||||
double[] rotate = HbmAnimations.getRelevantTransformation("ROTATE", index);
|
||||
|
||||
GL11.glTranslated(0, 3, -6);
|
||||
GL11.glRotated(equip[0], 1, 0, 0);
|
||||
GL11.glTranslated(0, -3, 6);
|
||||
|
||||
GL11.glTranslated(0, 0, recoil[2]);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
|
||||
ResourceManager.minigun.renderPart(index == 0 ? "GunDual" : "Gun");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotated(rotate[2] * i, 0, 0, 1);
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0, 12);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
|
||||
GL11.glRotated(gun.shotRand * 90, 1, 0, 0);
|
||||
GL11.glScaled(1.5, 1.5, 1.5);
|
||||
this.renderMuzzleFlash(gun.lastShot[index], 75, 5);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupThirdPerson(ItemStack stack) {
|
||||
super.setupThirdPerson(stack);
|
||||
double scale = 1.75D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glTranslated(-1, -3.5, 8);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupThirdPersonAkimbo(ItemStack stack) {
|
||||
super.setupThirdPerson(stack);
|
||||
double scale = 1.75D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glTranslated(2, -3.5, 8);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupInv(ItemStack stack) {
|
||||
GL11.glScaled(1, 1, -1);
|
||||
GL11.glTranslated(8, 8, 0);
|
||||
double scale = 0.875D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupModTable(ItemStack stack) {
|
||||
double scale = -6.25D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderEquipped(ItemStack stack) {
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_dual_tex);
|
||||
ResourceManager.minigun.renderPart("Gun");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderEquippedAkimbo(ItemStack stack) {
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_dual_tex);
|
||||
ResourceManager.minigun.renderPart("GunDual");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderModTable(ItemStack stack, int index) {
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_dual_tex);
|
||||
ResourceManager.minigun.renderPart(index == 0 ? "GunDual" : "Gun");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderInv(ItemStack stack) {
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_dual_tex);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotated(225, 0, 0, 1);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glRotated(45, 0, 1, 0);
|
||||
ResourceManager.minigun.renderPart("GunDual");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glTranslated(0, 0, 8);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotated(225, 0, 0, 1);
|
||||
GL11.glRotated(-90, 0, 1, 0);
|
||||
GL11.glRotated(-90, 1, 0, 0);
|
||||
GL11.glRotated(-45, 0, 1, 0);
|
||||
ResourceManager.minigun.renderPart("Gun");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderOther(ItemStack stack, ItemRenderType type) {
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.minigun_dual_tex);
|
||||
ResourceManager.minigun.renderPart("Gun");
|
||||
ResourceManager.minigun.renderPart("Barrels");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
public boolean hasSilencer(ItemStack stack, int cfg) {
|
||||
return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_SILENCER);
|
||||
}
|
||||
|
||||
public boolean isSaturnite(ItemStack stack, int cfg) {
|
||||
return WeaponModManager.hasUpgrade(stack, cfg, WeaponModManager.ID_UZI_SATURN);
|
||||
}
|
||||
}
|
||||
@ -5,12 +5,15 @@ import java.util.Random;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.bomb.BlockCrashedBomb.EnumDudType;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.util.EnumUtil;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
@ -35,10 +38,13 @@ public class RenderCrashedBomb extends TileEntitySpecialRenderer implements IIte
|
||||
GL11.glRotated(pitch, 1, 0, 0);
|
||||
GL11.glRotated(roll, 0, 0, 1);
|
||||
GL11.glTranslated(0, 0, -offset);
|
||||
|
||||
|
||||
EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, tile.getBlockMetadata());
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.dud_balefire_tex);
|
||||
ResourceManager.dud_balefire.renderAll();
|
||||
if(type == EnumDudType.BALEFIRE) { bindTexture(ResourceManager.dud_balefire_tex); ResourceManager.dud_balefire.renderAll(); }
|
||||
if(type == EnumDudType.CONVENTIONAL) { bindTexture(ResourceManager.dud_conventional_tex); ResourceManager.dud_conventional.renderAll(); }
|
||||
if(type == EnumDudType.NUKE) { GL11.glTranslated(0, 0, 1.25); bindTexture(ResourceManager.dud_nuke_tex); ResourceManager.dud_nuke.renderAll(); }
|
||||
if(type == EnumDudType.SALTED) { GL11.glTranslated(0, 0, 0.5); bindTexture(ResourceManager.dud_salted_tex); ResourceManager.dud_salted.renderAll(); }
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
@ -55,14 +61,17 @@ public class RenderCrashedBomb extends TileEntitySpecialRenderer implements IIte
|
||||
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, 3, 0);
|
||||
GL11.glScaled(2.75, 2.75, 2.75);
|
||||
GL11.glScaled(2.125, 2.125, 2.125);
|
||||
GL11.glRotated(90, 0, 0, 1);
|
||||
}
|
||||
public void renderCommon() {
|
||||
public void renderCommonWithStack(ItemStack item) {
|
||||
EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, item.getItemDamage());
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
bindTexture(ResourceManager.dud_balefire_tex);
|
||||
ResourceManager.dud_balefire.renderAll();
|
||||
if(type == EnumDudType.BALEFIRE) { bindTexture(ResourceManager.dud_balefire_tex); ResourceManager.dud_balefire.renderAll(); }
|
||||
if(type == EnumDudType.CONVENTIONAL) { GL11.glTranslated(0, 0, -0.5); bindTexture(ResourceManager.dud_conventional_tex); ResourceManager.dud_conventional.renderAll(); }
|
||||
if(type == EnumDudType.NUKE) { GL11.glTranslated(0, 0, 1.25); bindTexture(ResourceManager.dud_nuke_tex); ResourceManager.dud_nuke.renderAll(); }
|
||||
if(type == EnumDudType.SALTED) { GL11.glTranslated(0, 0, 0.5); bindTexture(ResourceManager.dud_salted_tex); ResourceManager.dud_salted.renderAll(); }
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}};
|
||||
}
|
||||
|
||||
@ -10,60 +10,61 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class RenderMiscEffects {
|
||||
|
||||
|
||||
public static ResourceLocation glint = new ResourceLocation(RefStrings.MODID + ":textures/misc/glint.png");
|
||||
|
||||
public static ResourceLocation glintBF = new ResourceLocation(RefStrings.MODID + ":textures/misc/glintBF.png");
|
||||
|
||||
public static void renderClassicGlint(World world, float interpol, IModelCustom model, String part, float colorMod, float r, float g, float b, float speed, float scale) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
float offset = Minecraft.getMinecraft().thePlayer.ticksExisted + interpol;
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
float color = colorMod;
|
||||
GL11.glColor4f(color, color, color, 1.0F);
|
||||
GL11.glDepthFunc(GL11.GL_EQUAL);
|
||||
GL11.glDepthMask(false);
|
||||
GL11.glPushMatrix();
|
||||
float offset = Minecraft.getMinecraft().thePlayer.ticksExisted + interpol;
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
float color = colorMod;
|
||||
GL11.glColor4f(color, color, color, 1.0F);
|
||||
GL11.glDepthFunc(GL11.GL_EQUAL);
|
||||
GL11.glDepthMask(false);
|
||||
|
||||
for (int k = 0; k < 2; ++k) {
|
||||
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
float glintColor = 0.76F;
|
||||
|
||||
GL11.glColor4f(r * glintColor, g * glintColor, b * glintColor, 1.0F);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
|
||||
float movement = offset * (0.001F + (float)k * 0.003F) * speed;
|
||||
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
GL11.glRotatef(30.0F - (float)k * 60.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(0.0F, movement, 0.0F);
|
||||
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
|
||||
if("all".equals(part))
|
||||
model.renderAll();
|
||||
else
|
||||
model.renderPart(part);
|
||||
}
|
||||
for(int k = 0; k < 2; ++k) {
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glDepthFunc(GL11.GL_LEQUAL);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
float glintColor = 0.76F;
|
||||
|
||||
GL11.glColor4f(r * glintColor, g * glintColor, b * glintColor, 1.0F);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glLoadIdentity();
|
||||
|
||||
float movement = offset * (0.001F + (float) k * 0.003F) * speed;
|
||||
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
GL11.glRotatef(30.0F - (float) k * 60.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(0.0F, movement, 0.0F);
|
||||
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
|
||||
if("all".equals(part))
|
||||
model.renderAll();
|
||||
else
|
||||
model.renderPart(part);
|
||||
}
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glMatrixMode(GL11.GL_TEXTURE);
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glDepthFunc(GL11.GL_LEQUAL);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public static void renderClassicGlint(World world, float interpol, IModelCustom model, String part, float r, float g, float b, float speed, float scale) {
|
||||
renderClassicGlint(world, interpol, model, part, 0.5F, r, g, b, speed, scale);
|
||||
}
|
||||
}
|
||||
|
||||
public static void renderClassicGlint(World world, float interpol, IModelCustom model, String part) {
|
||||
renderClassicGlint(world, interpol, model, part, 0.5F, 0.25F, 0.8F, 20.0F, 1F/3F);
|
||||
}
|
||||
renderClassicGlint(world, interpol, model, part, 0.5F, 0.25F, 0.8F, 20.0F, 1F / 3F);
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,15 +8,9 @@ import net.minecraft.util.AxisAlignedBB;
|
||||
public class TileEntityCrashedBomb extends TileEntity {
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return TileEntity.INFINITE_EXTENT_AABB;
|
||||
}
|
||||
public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; }
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared()
|
||||
{
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
public double getMaxRenderDistanceSquared() { return 65536.0D; }
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr
|
||||
|
||||
if(operational) turnTimer = 25;
|
||||
networkPackNT(150);
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
this.lastRotor = this.rotor;
|
||||
@ -297,29 +297,35 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr
|
||||
}
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():table -- Gets current tanks state. The format is the following: <input tank amount>, <input tank capacity>, <output tank amount>, <output tank capacity>")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():number -- Gets the current input tank fluid type. 0 stands for steam, 1 for dense steam, 2 for super dense steam and 3 for ultra dense steam.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getType(Context context, Arguments args) {
|
||||
return CompatHandler.steamTypeToInt(tanks[1].getTankType());
|
||||
return CompatHandler.steamTypeToInt(tanks[0].getTankType());
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Callback(direct = true, limit = 4, doc = "function(type:number) -- Sets the input tank fluid type. Refer getType() for the accepted values information.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setType(Context context, Arguments args) {
|
||||
tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0)));
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():number -- Gets the power buffer of the turbine.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getPower(Context context, Arguments args) {
|
||||
return new Object[] {power};
|
||||
}
|
||||
|
||||
@Callback(direct = true, doc = "function():table -- Gets information about this turbine. The format is the following: <input tank amount>, <input tank capacity>, <output tank amount>, <output tank capacity>, <input tank fluid type>, <power>")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())[0], power};
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -329,6 +335,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr
|
||||
"getFluid",
|
||||
"getType",
|
||||
"setType",
|
||||
"getPower",
|
||||
"getInfo"
|
||||
};
|
||||
}
|
||||
@ -343,6 +350,8 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr
|
||||
return getType(context, args);
|
||||
case ("setType"):
|
||||
return setType(context, args);
|
||||
case ("getPower"):
|
||||
return getPower(context, args);
|
||||
case ("getInfo"):
|
||||
return getInfo(context, args);
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
public long power;
|
||||
public FluidTank[] tanks;
|
||||
protected double[] info = new double[3];
|
||||
|
||||
|
||||
private boolean shouldTurn;
|
||||
public float rotor;
|
||||
public float lastRotor;
|
||||
@ -57,7 +57,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
|
||||
private AudioWrapper audio;
|
||||
private float audioDesync;
|
||||
|
||||
|
||||
//Configurable Values
|
||||
public static long maxPower = 100000000;
|
||||
public static int inputTankSize = 512_000;
|
||||
@ -67,7 +67,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
|
||||
public TileEntityMachineLargeTurbine() {
|
||||
super(7);
|
||||
|
||||
|
||||
tanks = new FluidTank[2];
|
||||
tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize);
|
||||
tanks[1] = new FluidTank(Fluids.SPENTSTEAM, outputTankSize);
|
||||
@ -107,11 +107,11 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
|
||||
this.info = new double[3];
|
||||
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
this.tryProvide(worldObj, xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite());
|
||||
for(DirPos pos : getConPos()) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
@ -144,7 +144,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
}
|
||||
if(!valid) tanks[1].setTankType(Fluids.NONE);
|
||||
if(power > maxPower) power = maxPower;
|
||||
|
||||
|
||||
tanks[1].unloadTank(5, 6, slots);
|
||||
|
||||
this.networkPackNT(50);
|
||||
@ -152,12 +152,12 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
} else {
|
||||
this.lastRotor = this.rotor;
|
||||
this.rotor += this.fanAcceleration;
|
||||
|
||||
|
||||
if(this.rotor >= 360) {
|
||||
this.rotor -= 360;
|
||||
this.lastRotor -= 360;
|
||||
}
|
||||
|
||||
|
||||
if(shouldTurn) {
|
||||
// Fan accelerates with a random offset to ensure the audio doesn't perfectly align, makes for a more pleasant hum
|
||||
this.fanAcceleration = Math.max(0F, Math.min(15F, this.fanAcceleration += 0.075F + audioDesync));
|
||||
@ -172,7 +172,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
audio.updatePitch(0.25F + 0.75F * turbineSpeed);
|
||||
} else {
|
||||
this.fanAcceleration = Math.max(0F, Math.min(15F, this.fanAcceleration -= 0.1F));
|
||||
|
||||
|
||||
if(audio != null) {
|
||||
if(this.fanAcceleration > 0) {
|
||||
float turbineSpeed = this.fanAcceleration / 15F;
|
||||
@ -186,7 +186,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected DirPos[] getConPos() {
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
@ -214,11 +214,11 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
tanks[0].deserialize(buf);
|
||||
tanks[1].deserialize(buf);
|
||||
}
|
||||
|
||||
|
||||
public long getPowerScaled(int i) {
|
||||
return (power * i) / maxPower;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
@ -226,7 +226,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
tanks[1].readFromNBT(nbt, "steam");
|
||||
power = nbt.getLong("power");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
@ -249,12 +249,12 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
public long getMaxPower() {
|
||||
return this.maxPower;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return TileEntity.INFINITE_EXTENT_AABB;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
@ -281,11 +281,11 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
public String getComponentName() {
|
||||
return "ntm_turbine";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onChunkUnload() {
|
||||
super.onChunkUnload();
|
||||
|
||||
|
||||
if(audio != null) {
|
||||
audio.stopSound();
|
||||
audio = null;
|
||||
@ -302,29 +302,35 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
}
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():table -- Gets current tanks state. The format is the following: <input tank amount>, <input tank capacity>, <output tank amount>, <output tank capacity>")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():number -- Gets the current input tank fluid type. 0 stands for steam, 1 for dense steam, 2 for super dense steam and 3 for ultra dense steam.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getType(Context context, Arguments args) {
|
||||
return CompatHandler.steamTypeToInt(tanks[1].getTankType());
|
||||
return CompatHandler.steamTypeToInt(tanks[0].getTankType());
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Callback(direct = true, limit = 4, doc = "function(type:number) -- Sets the input tank fluid type. Refer getType() for the accepted values information.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setType(Context context, Arguments args) {
|
||||
tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0)));
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():number -- Gets the power buffer of the turbine.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getPower(Context context, Arguments args) {
|
||||
return new Object[] {power};
|
||||
}
|
||||
|
||||
@Callback(direct = true, doc = "function():table -- Gets information about this turbine. The format is the following: <input tank amount>, <input tank capacity>, <output tank amount>, <output tank capacity>, <input tank fluid type>, <power>")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())[0], power};
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -334,6 +340,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme
|
||||
"getFluid",
|
||||
"getType",
|
||||
"setType",
|
||||
"getPower",
|
||||
"getInfo"
|
||||
};
|
||||
}
|
||||
|
||||
@ -355,29 +355,35 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS
|
||||
return "ntm_turbine";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():table -- Gets current tanks state. The format is the following: <input tank amount>, <input tank capacity>, <output tank amount>, <output tank capacity>")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():number -- Gets the current input tank fluid type. 0 stands for steam, 1 for dense steam, 2 for super dense steam and 3 for ultra dense steam.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getType(Context context, Arguments args) {
|
||||
return CompatHandler.steamTypeToInt(tanks[1].getTankType());
|
||||
return CompatHandler.steamTypeToInt(tanks[0].getTankType());
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Callback(direct = true, limit = 4, doc = "function(type:number) -- Sets the input tank fluid type. Refer getType() for the accepted values information.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setType(Context context, Arguments args) {
|
||||
tanks[0].setTankType(CompatHandler.intToSteamType(args.checkInteger(0)));
|
||||
return new Object[] {true};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Callback(direct = true, doc = "function():number -- Gets the power buffer of the turbine.")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getPower(Context context, Arguments args) {
|
||||
return new Object[] {power};
|
||||
}
|
||||
|
||||
@Callback(direct = true, doc = "function():table -- Gets information about this turbine. The format is the following: <input tank amount>, <input tank capacity>, <output tank amount>, <output tank capacity>, <input tank fluid type>, <power>")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())};
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill(), CompatHandler.steamTypeToInt(tanks[0].getTankType())[0], power};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.world.feature;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.bomb.BlockCrashedBomb.EnumDudType;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
@ -60,7 +61,7 @@ public class Dud extends WorldGenerator {
|
||||
if(!LocationIsValidSpawn(world, x, y, z))
|
||||
return false;
|
||||
|
||||
world.setBlock(x, y, z, ModBlocks.crashed_balefire, rand.nextInt(4) + 2, 3);
|
||||
world.setBlock(x, y, z, ModBlocks.crashed_balefire, rand.nextInt(EnumDudType.values().length), 3);
|
||||
|
||||
if(GeneralConfig.enableDebugMode)
|
||||
System.out.print("[Debug] Successfully spawned dud at " + x + " " + y + " " + z + "\n");
|
||||
|
||||
@ -1072,6 +1072,9 @@ item.ammo_standard.capacitor_ir.name=Capacitor (niedrige Wellenlänge)
|
||||
item.ammo_standard.capacitor_overcharge.name=Kondensator (Überladung)
|
||||
item.ammo_standard.coil_ferrouranium.name=Ferrourankugel
|
||||
item.ammo_standard.coil_tungsten.name=Wolframkugel
|
||||
item.ammo_standard.ct_hook.name=Enterhaken
|
||||
item.ammo_standard.ct_mortar.name=Sprengladung
|
||||
item.ammo_standard.ct_mortar_charge.name=Geballte Ladung
|
||||
item.ammo_standard.flame_balefire.name=Flammenwerferbrennstoff, Balefire
|
||||
item.ammo_standard.flame_diesel.name=Flammenwerferbrennstoff, Diesel
|
||||
item.ammo_standard.flame_gas.name=Flammenwerferbrennstoff, Gas
|
||||
@ -2071,6 +2074,7 @@ item.gun_b92.name=§9B92 Energiepistole§r
|
||||
item.gun_b92_ammo.name=§9B92-Energiezelle§r
|
||||
item.gun_bolter.name=Boltergewehr
|
||||
item.gun_carbine.name=Karabiner
|
||||
item.gun_charge_thrower.name=Ladungswerfer
|
||||
item.gun_chemthrower.name=Chemowerfer
|
||||
item.gun_coilgun.name=Gaußpistole
|
||||
item.gun_cryocannon.name=Kyro-Kanone
|
||||
|
||||
@ -1797,6 +1797,9 @@ item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength)
|
||||
item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge)
|
||||
item.ammo_standard.coil_ferrouranium.name=Coilgun Ferrouranium Ball
|
||||
item.ammo_standard.coil_tungsten.name=Coilgun Tungsten Ball
|
||||
item.ammo_standard.ct_hook.name=Grappling Hook
|
||||
item.ammo_standard.ct_mortar.name=Demolition Charge
|
||||
item.ammo_standard.ct_mortar_charge.name=Heavy Demolition Charge
|
||||
item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire
|
||||
item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel
|
||||
item.ammo_standard.flame_gas.name=Flamer Fuel, Gas
|
||||
@ -2882,6 +2885,7 @@ item.gun_b92.name=§9B92 Energy Pistol§r
|
||||
item.gun_b92_ammo.name=§9B92 Energy Cell§r
|
||||
item.gun_bolter.name=Bolter
|
||||
item.gun_carbine.name=Carbine
|
||||
item.gun_charge_thrower.name=Charge Thrower
|
||||
item.gun_chemthrower.name=Chemthrower
|
||||
item.gun_coilgun.name=Coilgun
|
||||
item.gun_congolake.name=Congo Lake
|
||||
|
||||
@ -6048,3 +6048,15 @@ container.ammoBag=弹药袋
|
||||
item.ammo_bag.name=弹药袋
|
||||
item.ammo_bag_infinite.name=无限弹药袋
|
||||
item.gun_g3_zebra.name=斑马步枪
|
||||
container.rttyController=无线红石信号控制器
|
||||
container.rttyReader=无线红石信号控制器
|
||||
tile.radio_torch_controller.name=无线红石信号控制器
|
||||
tile.radio_torch_controller.desc=可以接收信号并将信号传送到与其连接的机器
|
||||
tile.radio_torch_reader.name=无线红石信号控制器
|
||||
tile.radio_torch_reader.desc=从被连接的块读取数值并以指定的频率发送
|
||||
item.ammo_standard.ct_hook.name=抓钩
|
||||
item.ammo_standard.ct_mortar.name=炸药包
|
||||
item.ammo_standard.ct_mortar_charge.name=重型炸药包
|
||||
item.gun_charge_thrower.name=炸药投掷器
|
||||
tile.sandbags.name=沙袋
|
||||
tile.wood_barrier.name=木制围栏
|
||||
|
||||
940
src/main/resources/assets/hbm/models/bombs/dud_conventional.obj
Normal file
@ -0,0 +1,940 @@
|
||||
# Blender v2.79 (sub 7) OBJ File: 'dud1.blend'
|
||||
# www.blender.org
|
||||
mtllib dud_conventional.mtl
|
||||
o Cube.003_Cube.005
|
||||
v 0.392370 -0.392370 -1.500000
|
||||
v 0.392370 -0.392370 2.499999
|
||||
v 0.267370 -0.392370 -1.500000
|
||||
v 0.267370 -0.392370 2.499999
|
||||
v 0.392370 -0.267370 -1.500000
|
||||
v 0.392370 -0.267370 2.499999
|
||||
v 0.267370 -0.267370 -1.500000
|
||||
v 0.267370 -0.267370 2.499999
|
||||
v -0.392369 -0.392370 -1.500000
|
||||
v -0.392370 -0.392369 2.499999
|
||||
v -0.392369 -0.267370 -1.500000
|
||||
v -0.392370 -0.267369 2.499999
|
||||
v -0.267369 -0.392370 -1.500000
|
||||
v -0.267370 -0.392369 2.499999
|
||||
v -0.267369 -0.267370 -1.500000
|
||||
v -0.267370 -0.267369 2.499999
|
||||
v -0.392370 0.392369 -1.500000
|
||||
v -0.392370 0.392370 2.499999
|
||||
v -0.267370 0.392369 -1.500000
|
||||
v -0.267370 0.392370 2.499999
|
||||
v -0.392370 0.267369 -1.500000
|
||||
v -0.392370 0.267370 2.499999
|
||||
v -0.267370 0.267369 -1.500000
|
||||
v -0.267370 0.267370 2.499999
|
||||
v 0.392369 0.392369 -1.499999
|
||||
v 0.392370 0.392370 2.499998
|
||||
v 0.392369 0.267369 -1.499999
|
||||
v 0.392370 0.267370 2.499999
|
||||
v 0.267369 0.392370 -1.499999
|
||||
v 0.267370 0.392370 2.499999
|
||||
v 0.267369 0.267370 -1.499999
|
||||
v 0.267370 0.267370 2.499999
|
||||
v 0.220971 -0.088388 -3.500000
|
||||
v 0.220971 -0.088388 -3.437500
|
||||
v 0.265165 -0.132582 -3.500000
|
||||
v 0.265165 -0.132582 -3.437500
|
||||
v 0.088388 -0.220971 -3.500000
|
||||
v 0.088388 -0.220971 -3.437500
|
||||
v 0.132583 -0.265165 -3.500000
|
||||
v 0.132583 -0.265165 -3.437500
|
||||
v 0.353553 -0.132582 -3.437500
|
||||
v 0.353553 -0.132582 -3.500000
|
||||
v 0.132583 -0.353553 -3.500000
|
||||
v 0.132583 -0.353553 -3.437500
|
||||
v 0.707107 -0.486136 -3.437500
|
||||
v 0.707107 -0.486136 -3.500000
|
||||
v 0.486136 -0.707107 -3.500000
|
||||
v 0.486136 -0.707107 -3.437500
|
||||
v -0.088388 -0.220971 -3.500000
|
||||
v -0.088388 -0.220971 -3.437500
|
||||
v -0.132582 -0.265166 -3.500000
|
||||
v -0.132582 -0.265166 -3.437500
|
||||
v -0.220970 -0.088389 -3.500000
|
||||
v -0.220970 -0.088389 -3.437500
|
||||
v -0.265165 -0.132583 -3.500000
|
||||
v -0.265165 -0.132583 -3.437500
|
||||
v -0.132582 -0.353554 -3.437500
|
||||
v -0.132582 -0.353554 -3.500000
|
||||
v -0.353553 -0.132583 -3.500000
|
||||
v -0.353553 -0.132583 -3.437500
|
||||
v -0.486135 -0.707107 -3.437500
|
||||
v -0.486135 -0.707107 -3.500000
|
||||
v -0.707106 -0.486136 -3.500000
|
||||
v -0.707106 -0.486136 -3.437500
|
||||
v -0.220971 0.088387 -3.500000
|
||||
v -0.220971 0.088387 -3.437500
|
||||
v -0.265165 0.132582 -3.500000
|
||||
v -0.265165 0.132582 -3.437500
|
||||
v -0.088388 0.220970 -3.500000
|
||||
v -0.088388 0.220970 -3.437500
|
||||
v -0.132582 0.265164 -3.500000
|
||||
v -0.132582 0.265164 -3.437500
|
||||
v -0.353553 0.132582 -3.437500
|
||||
v -0.353553 0.132582 -3.500000
|
||||
v -0.132583 0.353552 -3.500000
|
||||
v -0.132582 0.353552 -3.437500
|
||||
v -0.707107 0.486135 -3.437501
|
||||
v -0.707107 0.486135 -3.500001
|
||||
v -0.486136 0.707106 -3.500001
|
||||
v -0.486136 0.707106 -3.437501
|
||||
v 0.088388 0.220970 -3.500000
|
||||
v 0.088388 0.220970 -3.437500
|
||||
v 0.132582 0.265164 -3.500000
|
||||
v 0.132582 0.265164 -3.437500
|
||||
v 0.220970 0.088388 -3.500000
|
||||
v 0.220970 0.088388 -3.437500
|
||||
v 0.265164 0.132582 -3.500000
|
||||
v 0.265164 0.132582 -3.437500
|
||||
v 0.132582 0.353553 -3.437501
|
||||
v 0.132582 0.353553 -3.500000
|
||||
v 0.353553 0.132582 -3.500000
|
||||
v 0.353553 0.132582 -3.437500
|
||||
v 0.486135 0.707106 -3.437501
|
||||
v 0.486135 0.707106 -3.500001
|
||||
v 0.707106 0.486135 -3.500001
|
||||
v 0.707106 0.486135 -3.437501
|
||||
v 0.420463 -0.062500 -1.424884
|
||||
v 0.420463 0.062500 -1.424884
|
||||
v 0.420463 0.000000 -1.500000
|
||||
v 0.920463 -0.062500 -1.674884
|
||||
v 0.920463 0.000000 -1.750000
|
||||
v 0.920463 0.062500 -1.674884
|
||||
v 0.420463 -0.062500 0.424884
|
||||
v 0.420463 -0.000000 0.500000
|
||||
v 0.420463 0.062500 0.424884
|
||||
v 0.920463 -0.062500 0.174884
|
||||
v 0.920463 0.062500 0.174884
|
||||
v 0.920463 -0.000000 0.250000
|
||||
v -0.420463 -0.062500 -1.424884
|
||||
v -0.420463 0.062500 -1.424884
|
||||
v -0.420463 0.000000 -1.500000
|
||||
v -0.920463 -0.062500 -1.674884
|
||||
v -0.920463 0.000000 -1.750000
|
||||
v -0.920463 0.062500 -1.674884
|
||||
v -0.420463 -0.062500 0.424884
|
||||
v -0.420463 -0.000000 0.500000
|
||||
v -0.420463 0.062500 0.424884
|
||||
v -0.920463 -0.062500 0.174884
|
||||
v -0.920463 0.062500 0.174884
|
||||
v -0.920463 -0.000000 0.250000
|
||||
v -0.186935 -0.031250 3.781250
|
||||
v -0.186935 -0.031250 4.156250
|
||||
v -0.186935 0.031250 3.781250
|
||||
v -0.186935 0.031250 4.156250
|
||||
v -0.124435 -0.031250 3.781250
|
||||
v -0.124435 -0.031250 4.156250
|
||||
v -0.124435 0.031250 3.781250
|
||||
v -0.124435 0.031250 4.156250
|
||||
v 0.186935 -0.031250 3.781250
|
||||
v 0.186935 -0.031250 4.156250
|
||||
v 0.186935 0.031250 3.781250
|
||||
v 0.186935 0.031250 4.156250
|
||||
v 0.124435 -0.031250 3.781250
|
||||
v 0.124435 -0.031250 4.156250
|
||||
v 0.124435 0.031250 3.781250
|
||||
v 0.124435 0.031250 4.156250
|
||||
v -0.000000 0.482963 -2.000000
|
||||
v -0.000000 0.482962 3.000000
|
||||
v 0.241481 0.418258 -2.000000
|
||||
v 0.241481 0.418258 3.000000
|
||||
v 0.418258 0.241481 -2.000000
|
||||
v 0.418258 0.241481 3.000000
|
||||
v 0.482963 0.000000 -2.000000
|
||||
v 0.482963 -0.000000 3.000000
|
||||
v 0.418258 -0.241481 -2.000000
|
||||
v 0.418258 -0.241482 3.000000
|
||||
v 0.241481 -0.418258 -2.000000
|
||||
v 0.241481 -0.418258 3.000000
|
||||
v 0.000000 -0.482963 -2.000000
|
||||
v 0.000000 -0.482963 3.000000
|
||||
v -0.241481 -0.418258 -2.000000
|
||||
v -0.241481 -0.418258 3.000000
|
||||
v -0.418258 -0.241481 -2.000000
|
||||
v -0.418258 -0.241482 3.000000
|
||||
v -0.482963 -0.000000 -2.000000
|
||||
v -0.482963 -0.000000 3.000000
|
||||
v -0.418258 0.241481 -2.000000
|
||||
v -0.418258 0.241481 3.000000
|
||||
v -0.241482 0.418258 -2.000000
|
||||
v -0.241482 0.418258 3.000000
|
||||
v 0.000000 0.241481 -3.000000
|
||||
v 0.120741 0.209129 -3.000000
|
||||
v 0.209129 0.120741 -3.000000
|
||||
v 0.241481 0.000000 -3.000000
|
||||
v 0.209129 -0.120741 -3.000000
|
||||
v 0.120741 -0.209129 -3.000000
|
||||
v 0.000000 -0.241481 -3.000000
|
||||
v -0.120741 -0.209129 -3.000000
|
||||
v -0.209129 -0.120741 -3.000000
|
||||
v -0.241481 -0.000000 -3.000000
|
||||
v -0.209129 0.120741 -3.000000
|
||||
v -0.120741 0.209129 -3.000000
|
||||
v 0.000000 0.241481 -3.500000
|
||||
v 0.120741 0.209129 -3.500000
|
||||
v 0.209129 0.120741 -3.500000
|
||||
v 0.241481 0.000000 -3.500000
|
||||
v 0.209129 -0.120741 -3.500000
|
||||
v 0.120741 -0.209129 -3.500000
|
||||
v 0.000000 -0.241481 -3.500000
|
||||
v -0.120741 -0.209129 -3.500000
|
||||
v -0.209129 -0.120741 -3.500000
|
||||
v -0.241481 -0.000000 -3.500000
|
||||
v -0.209129 0.120741 -3.500000
|
||||
v -0.120741 0.209129 -3.500000
|
||||
v 0.120741 0.209129 3.750000
|
||||
v -0.000000 0.241481 3.750000
|
||||
v 0.209129 0.120740 3.750000
|
||||
v 0.241481 -0.000000 3.750000
|
||||
v 0.209129 -0.120741 3.750000
|
||||
v 0.120741 -0.209129 3.750000
|
||||
v 0.000000 -0.241481 3.750000
|
||||
v -0.120741 -0.209129 3.750000
|
||||
v -0.209129 -0.120741 3.750000
|
||||
v -0.241481 -0.000000 3.750000
|
||||
v -0.209129 0.120740 3.750000
|
||||
v -0.120741 0.209129 3.750000
|
||||
v 0.000000 -0.000000 4.000000
|
||||
vt 0.382857 0.042857
|
||||
vt 0.017143 0.071429
|
||||
vt 0.017143 0.042857
|
||||
vt 0.382857 0.014286
|
||||
vt 0.017143 0.014286
|
||||
vt 0.005714 0.014286
|
||||
vt 0.005714 0.042857
|
||||
vt 0.394286 0.042857
|
||||
vt 0.394286 0.014286
|
||||
vt 0.382857 0.114286
|
||||
vt 0.017143 0.142857
|
||||
vt 0.017143 0.114286
|
||||
vt 0.382857 0.085714
|
||||
vt 0.017143 0.085714
|
||||
vt 0.005714 0.085714
|
||||
vt 0.005714 0.114286
|
||||
vt 0.394286 0.114286
|
||||
vt 0.394286 0.085714
|
||||
vt 0.382857 0.185714
|
||||
vt 0.017143 0.214286
|
||||
vt 0.017143 0.185714
|
||||
vt 0.382857 0.157143
|
||||
vt 0.017143 0.157143
|
||||
vt 0.005714 0.157143
|
||||
vt 0.005714 0.185714
|
||||
vt 0.394286 0.185714
|
||||
vt 0.394286 0.157143
|
||||
vt 0.382857 0.257143
|
||||
vt 0.017143 0.285714
|
||||
vt 0.017143 0.257143
|
||||
vt 0.017143 0.228571
|
||||
vt 0.005714 0.228571
|
||||
vt 0.005714 0.257143
|
||||
vt 0.394286 0.257143
|
||||
vt 0.382857 0.228571
|
||||
vt 0.394286 0.228571
|
||||
vt 0.691429 0.128571
|
||||
vt 0.685714 0.142857
|
||||
vt 0.685714 0.128571
|
||||
vt 0.657143 0.142857
|
||||
vt 0.651429 0.157143
|
||||
vt 0.651429 0.142857
|
||||
vt 0.657143 0.128571
|
||||
vt 0.662857 0.142857
|
||||
vt 0.680000 0.128571
|
||||
vt 0.680000 0.142857
|
||||
vt 0.645714 0.142857
|
||||
vt 0.628571 0.128571
|
||||
vt 0.645714 0.128571
|
||||
vt 0.657143 0.157143
|
||||
vt 0.651429 0.271429
|
||||
vt 0.622857 0.157143
|
||||
vt 0.628571 0.142857
|
||||
vt 0.691429 0.142857
|
||||
vt 0.685714 0.157143
|
||||
vt 0.685714 0.285714
|
||||
vt 0.657143 0.271429
|
||||
vt 0.685714 0.271429
|
||||
vt 0.622857 0.271429
|
||||
vt 0.691429 0.157143
|
||||
vt 0.617143 0.128571
|
||||
vt 0.611429 0.142857
|
||||
vt 0.611429 0.128571
|
||||
vt 0.582857 0.142857
|
||||
vt 0.577143 0.157143
|
||||
vt 0.577143 0.142857
|
||||
vt 0.582857 0.128571
|
||||
vt 0.588571 0.142857
|
||||
vt 0.605714 0.128571
|
||||
vt 0.605714 0.142857
|
||||
vt 0.571429 0.142857
|
||||
vt 0.554286 0.128571
|
||||
vt 0.571429 0.128571
|
||||
vt 0.582857 0.157143
|
||||
vt 0.577143 0.271429
|
||||
vt 0.548571 0.157143
|
||||
vt 0.554286 0.142857
|
||||
vt 0.617143 0.142857
|
||||
vt 0.611429 0.157143
|
||||
vt 0.611429 0.285714
|
||||
vt 0.582857 0.271429
|
||||
vt 0.611429 0.271429
|
||||
vt 0.548571 0.271429
|
||||
vt 0.617143 0.157143
|
||||
vt 0.542857 0.128571
|
||||
vt 0.537143 0.142857
|
||||
vt 0.537143 0.128571
|
||||
vt 0.502857 0.142857
|
||||
vt 0.508571 0.157143
|
||||
vt 0.502857 0.157143
|
||||
vt 0.508571 0.142857
|
||||
vt 0.502857 0.128571
|
||||
vt 0.508571 0.128571
|
||||
vt 0.514286 0.142857
|
||||
vt 0.531429 0.128571
|
||||
vt 0.531429 0.142857
|
||||
vt 0.480000 0.142857
|
||||
vt 0.497143 0.128571
|
||||
vt 0.497143 0.142857
|
||||
vt 0.502857 0.271429
|
||||
vt 0.474286 0.157143
|
||||
vt 0.542857 0.142857
|
||||
vt 0.537143 0.157143
|
||||
vt 0.537143 0.285714
|
||||
vt 0.508571 0.271429
|
||||
vt 0.537143 0.271429
|
||||
vt 0.474286 0.271429
|
||||
vt 0.542857 0.271429
|
||||
vt 0.468571 0.128571
|
||||
vt 0.462857 0.142857
|
||||
vt 0.462857 0.128571
|
||||
vt 0.434286 0.142857
|
||||
vt 0.428571 0.157143
|
||||
vt 0.428571 0.142857
|
||||
vt 0.434286 0.128571
|
||||
vt 0.440000 0.142857
|
||||
vt 0.457143 0.128571
|
||||
vt 0.457143 0.142857
|
||||
vt 0.422857 0.142857
|
||||
vt 0.405714 0.128571
|
||||
vt 0.422857 0.128571
|
||||
vt 0.434286 0.157143
|
||||
vt 0.428571 0.271429
|
||||
vt 0.400000 0.157143
|
||||
vt 0.405714 0.142857
|
||||
vt 0.468571 0.157143
|
||||
vt 0.462857 0.157143
|
||||
vt 0.462857 0.285714
|
||||
vt 0.434286 0.271429
|
||||
vt 0.462857 0.271429
|
||||
vt 0.400000 0.271429
|
||||
vt 0.468571 0.271429
|
||||
vt 0.862857 0.968548
|
||||
vt 0.862857 0.545738
|
||||
vt 0.874286 0.545738
|
||||
vt 0.805714 0.557143
|
||||
vt 0.760000 0.928571
|
||||
vt 0.760000 0.500000
|
||||
vt 0.857143 0.928571
|
||||
vt 0.811429 0.557143
|
||||
vt 0.857143 0.500000
|
||||
vt 0.805714 0.471429
|
||||
vt 0.760000 0.485714
|
||||
vt 0.760000 0.471429
|
||||
vt 0.760000 0.457143
|
||||
vt 0.805714 0.457143
|
||||
vt 0.857143 0.471429
|
||||
vt 0.811429 0.485714
|
||||
vt 0.811429 0.471429
|
||||
vt 0.811429 0.457143
|
||||
vt 0.857143 0.457143
|
||||
vt 0.880000 0.545738
|
||||
vt 0.891429 0.968548
|
||||
vt 0.880000 0.968548
|
||||
vt 0.948571 0.557143
|
||||
vt 0.994286 0.928571
|
||||
vt 0.948571 0.985714
|
||||
vt 0.942857 0.557143
|
||||
vt 0.897143 0.928571
|
||||
vt 0.897143 0.500000
|
||||
vt 0.994286 0.485714
|
||||
vt 0.948571 0.471429
|
||||
vt 0.994286 0.471429
|
||||
vt 0.994286 0.457143
|
||||
vt 0.942857 0.485714
|
||||
vt 0.897143 0.471429
|
||||
vt 0.942857 0.471429
|
||||
vt 0.942857 0.457143
|
||||
vt 0.714286 0.757143
|
||||
vt 0.748571 0.771429
|
||||
vt 0.748571 0.757143
|
||||
vt 0.714286 0.771429
|
||||
vt 0.748571 0.785714
|
||||
vt 0.714286 0.728571
|
||||
vt 0.748571 0.742857
|
||||
vt 0.748571 0.728571
|
||||
vt 0.714286 0.742857
|
||||
vt 0.708571 0.757143
|
||||
vt 0.708571 0.771429
|
||||
vt 0.748571 0.814286
|
||||
vt 0.714286 0.828571
|
||||
vt 0.748571 0.828571
|
||||
vt 0.748571 0.800000
|
||||
vt 0.714286 0.814286
|
||||
vt 0.748571 0.842857
|
||||
vt 0.714286 0.857143
|
||||
vt 0.748571 0.857143
|
||||
vt 0.714286 0.842857
|
||||
vt 0.708571 0.828571
|
||||
vt 0.708571 0.814286
|
||||
vt 0.382857 0.071429
|
||||
vt 0.382857 0.142857
|
||||
vt 0.382857 0.214286
|
||||
vt 0.382857 0.285714
|
||||
vt 0.651429 0.128571
|
||||
vt 0.662857 0.128571
|
||||
vt 0.657143 0.285714
|
||||
vt 0.691429 0.271429
|
||||
vt 0.577143 0.128571
|
||||
vt 0.588571 0.128571
|
||||
vt 0.582857 0.285714
|
||||
vt 0.617143 0.271429
|
||||
vt 0.514286 0.128571
|
||||
vt 0.480000 0.128571
|
||||
vt 0.542857 0.157143
|
||||
vt 0.508571 0.285714
|
||||
vt 0.468571 0.142857
|
||||
vt 0.428571 0.128571
|
||||
vt 0.440000 0.128571
|
||||
vt 0.434286 0.285714
|
||||
vt 0.868571 0.528571
|
||||
vt 0.874286 0.968548
|
||||
vt 0.868571 0.985714
|
||||
vt 0.805714 0.985714
|
||||
vt 0.811429 0.985714
|
||||
vt 0.805714 0.485714
|
||||
vt 0.857143 0.485714
|
||||
vt 0.885714 0.528571
|
||||
vt 0.891429 0.545738
|
||||
vt 0.885714 0.985714
|
||||
vt 0.994286 0.500000
|
||||
vt 0.942857 0.985714
|
||||
vt 0.948571 0.485714
|
||||
vt 0.948571 0.457143
|
||||
vt 0.897143 0.485714
|
||||
vt 0.897143 0.457143
|
||||
vt 0.714286 0.785714
|
||||
vt 0.714286 0.800000
|
||||
vt 0.102857 0.471429
|
||||
vt 0.560000 0.414286
|
||||
vt 0.560000 0.471429
|
||||
vt 0.102857 0.414286
|
||||
vt 0.560000 0.357143
|
||||
vt 0.102857 0.357143
|
||||
vt 0.560000 0.300000
|
||||
vt 0.102857 0.985714
|
||||
vt 0.560000 0.928571
|
||||
vt 0.560000 0.985714
|
||||
vt 0.102857 0.928571
|
||||
vt 0.560000 0.871429
|
||||
vt 0.102857 0.871429
|
||||
vt 0.560000 0.814286
|
||||
vt 0.102857 0.814286
|
||||
vt 0.560000 0.757143
|
||||
vt 0.102857 0.757143
|
||||
vt 0.560000 0.700000
|
||||
vt 0.102857 0.700000
|
||||
vt 0.560000 0.642857
|
||||
vt 0.102857 0.642857
|
||||
vt 0.560000 0.585714
|
||||
vt 0.034286 0.942857
|
||||
vt 0.102857 0.585714
|
||||
vt 0.560000 0.528571
|
||||
vt 0.102857 0.528571
|
||||
vt 0.651429 0.400000
|
||||
vt 0.657143 0.642857
|
||||
vt 0.702857 0.671429
|
||||
vt 0.657143 0.671429
|
||||
vt 0.651429 0.628571
|
||||
vt 0.651429 0.685714
|
||||
vt 0.651429 0.742857
|
||||
vt 0.651429 0.800000
|
||||
vt 0.651429 0.857143
|
||||
vt 0.651429 0.914286
|
||||
vt 0.651429 0.971429
|
||||
vt 0.651429 0.514286
|
||||
vt 0.651429 0.457143
|
||||
vt 0.651429 0.342857
|
||||
vt 0.651429 0.571429
|
||||
vt 0.753847 0.928913
|
||||
vt 0.720484 0.976662
|
||||
vt 0.720625 0.880554
|
||||
vt 0.657143 0.785714
|
||||
vt 0.702857 0.814286
|
||||
vt 0.657143 0.814286
|
||||
vt 0.657143 0.871429
|
||||
vt 0.702857 0.900000
|
||||
vt 0.657143 0.900000
|
||||
vt 0.657143 0.957143
|
||||
vt 0.702857 0.985714
|
||||
vt 0.657143 0.985714
|
||||
vt 0.657143 0.757143
|
||||
vt 0.702857 0.785714
|
||||
vt 0.657143 0.700000
|
||||
vt 0.702857 0.728571
|
||||
vt 0.657143 0.728571
|
||||
vt 0.657143 0.842857
|
||||
vt 0.702857 0.871429
|
||||
vt 0.657143 0.928571
|
||||
vt 0.702857 0.957143
|
||||
vt 0.702857 0.757143
|
||||
vt 0.702857 0.700000
|
||||
vt 0.702857 0.842857
|
||||
vt 0.702857 0.928571
|
||||
vt 0.034286 0.828571
|
||||
vt 0.034286 0.857143
|
||||
vt 0.005714 0.842857
|
||||
vt 0.034286 0.485714
|
||||
vt 0.034286 0.428571
|
||||
vt 0.034286 0.314286
|
||||
vt 0.102857 0.300000
|
||||
vt 0.034286 0.542857
|
||||
vt 0.034286 0.371429
|
||||
vt 0.034286 0.600000
|
||||
vt 0.034286 0.685714
|
||||
vt 0.034286 0.657143
|
||||
vt 0.034286 0.714286
|
||||
vt 0.034286 0.771429
|
||||
vt 0.034286 0.885714
|
||||
vt 0.034286 0.342857
|
||||
vt 0.005714 0.328571
|
||||
vt 0.034286 0.628571
|
||||
vt 0.005714 0.614286
|
||||
vt 0.034286 0.800000
|
||||
vt 0.005714 0.785714
|
||||
vt 0.034286 0.971429
|
||||
vt 0.005714 0.957143
|
||||
vt 0.034286 0.571429
|
||||
vt 0.005714 0.557143
|
||||
vt 0.034286 0.457143
|
||||
vt 0.005714 0.442857
|
||||
vt 0.034286 0.742857
|
||||
vt 0.005714 0.728571
|
||||
vt 0.034286 0.914286
|
||||
vt 0.005714 0.900000
|
||||
vt 0.034286 0.514286
|
||||
vt 0.005714 0.500000
|
||||
vt 0.034286 0.400000
|
||||
vt 0.005714 0.385714
|
||||
vt 0.005714 0.671429
|
||||
vt 0.651429 0.371429
|
||||
vt 0.702857 0.642857
|
||||
vt 0.651429 0.600000
|
||||
vt 0.651429 0.657143
|
||||
vt 0.651429 0.714286
|
||||
vt 0.651429 0.771429
|
||||
vt 0.651429 0.828571
|
||||
vt 0.651429 0.885714
|
||||
vt 0.651429 0.942857
|
||||
vt 0.651429 0.485714
|
||||
vt 0.651429 0.428571
|
||||
vt 0.651429 0.314286
|
||||
vt 0.651429 0.542857
|
||||
vt 0.731734 0.873222
|
||||
vt 0.742820 0.880758
|
||||
vt 0.750915 0.901142
|
||||
vt 0.750833 0.956630
|
||||
vt 0.742679 0.976865
|
||||
vt 0.731571 0.984197
|
||||
vt 0.712390 0.956277
|
||||
vt 0.709457 0.928506
|
||||
vt 0.712471 0.900789
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vn 1.0000 -0.0000 -0.0000
|
||||
vn -0.0000 0.0000 -1.0000
|
||||
vn -0.0000 0.0000 1.0000
|
||||
vn -1.0000 0.0000 -0.0000
|
||||
vn 0.0000 1.0000 -0.0000
|
||||
vn 0.7071 0.7071 -0.0000
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn -0.7071 0.7071 0.0000
|
||||
vn -0.3046 0.7322 -0.6092
|
||||
vn -0.3046 -0.7322 -0.6092
|
||||
vn 0.3046 0.7322 0.6092
|
||||
vn 0.3046 -0.7322 0.6092
|
||||
vn 0.3046 0.7322 -0.6092
|
||||
vn 0.3046 -0.7322 -0.6092
|
||||
vn -0.3046 0.7322 0.6092
|
||||
vn -0.3046 -0.7322 0.6092
|
||||
vn 0.0000 0.9885 0.1513
|
||||
vn 0.4966 0.8602 -0.1160
|
||||
vn 0.0000 0.9932 -0.1160
|
||||
vn 0.4942 0.8560 0.1513
|
||||
vn 0.8602 0.4966 -0.1160
|
||||
vn 0.8560 0.4942 0.1513
|
||||
vn 0.9932 0.0000 -0.1160
|
||||
vn 0.9885 0.0000 0.1513
|
||||
vn 0.8602 -0.4966 -0.1160
|
||||
vn 0.8560 -0.4942 0.1513
|
||||
vn 0.4966 -0.8602 -0.1160
|
||||
vn 0.4942 -0.8560 0.1513
|
||||
vn 0.0000 -0.9932 -0.1160
|
||||
vn 0.0000 -0.9885 0.1513
|
||||
vn -0.4966 -0.8602 -0.1160
|
||||
vn -0.4942 -0.8560 0.1513
|
||||
vn -0.8602 -0.4966 -0.1160
|
||||
vn -0.8560 -0.4942 0.1513
|
||||
vn -0.9932 0.0000 -0.1160
|
||||
vn -0.9885 0.0000 0.1513
|
||||
vn -0.8602 0.4966 -0.1160
|
||||
vn 0.7509 -0.4335 0.4981
|
||||
vn -0.8560 0.4942 0.1513
|
||||
vn -0.4966 0.8602 -0.1160
|
||||
vn -0.4942 0.8560 0.1513
|
||||
vn 0.4964 0.8597 -0.1205
|
||||
vn 0.9927 0.0000 -0.1205
|
||||
vn 0.6557 0.3786 -0.6532
|
||||
vn 0.8597 0.4964 -0.1205
|
||||
vn -0.9927 0.0000 -0.1205
|
||||
vn -0.8597 -0.4964 -0.1205
|
||||
vn -0.4963 -0.8597 -0.1205
|
||||
vn 0.0000 -0.9927 -0.1205
|
||||
vn 0.4964 -0.8597 -0.1205
|
||||
vn 0.8597 -0.4964 -0.1205
|
||||
vn -0.4964 0.8597 -0.1205
|
||||
vn 0.0000 0.9927 -0.1205
|
||||
vn -0.8597 0.4964 -0.1205
|
||||
vn 0.7571 0.0000 -0.6532
|
||||
vn -0.3786 -0.6557 -0.6532
|
||||
vn -0.3786 0.6557 -0.6532
|
||||
vn -0.7571 0.0000 -0.6532
|
||||
vn 0.0000 -0.7571 -0.6532
|
||||
vn -0.6557 0.3786 -0.6532
|
||||
vn 0.0000 0.7571 -0.6532
|
||||
vn 0.6557 -0.3786 -0.6532
|
||||
vn 0.3786 0.6557 -0.6532
|
||||
vn -0.6557 -0.3786 -0.6532
|
||||
vn 0.3786 -0.6557 -0.6532
|
||||
vn 0.0000 -0.8671 0.4981
|
||||
vn 0.4335 -0.7509 0.4981
|
||||
vn 0.0000 0.8671 0.4981
|
||||
vn 0.4335 0.7509 0.4981
|
||||
vn 0.8671 0.0000 0.4981
|
||||
vn -0.4335 0.7509 0.4981
|
||||
vn 0.7509 0.4335 0.4981
|
||||
vn -0.7509 0.4335 0.4981
|
||||
vn -0.7509 -0.4335 0.4981
|
||||
vn -0.8671 0.0000 0.4981
|
||||
vn -0.4335 -0.7509 0.4981
|
||||
usemtl None
|
||||
s off
|
||||
f 2/1/1 3/2/1 1/3/1
|
||||
f 6/4/2 1/3/2 5/5/2
|
||||
f 7/6/3 1/3/3 3/7/3
|
||||
f 4/8/4 6/4/4 8/9/4
|
||||
f 10/10/5 11/11/5 9/12/5
|
||||
f 14/13/1 9/12/1 13/14/1
|
||||
f 15/15/3 9/12/3 11/16/3
|
||||
f 12/17/4 14/13/4 16/18/4
|
||||
f 18/19/6 19/20/6 17/21/6
|
||||
f 22/22/5 17/21/5 21/23/5
|
||||
f 23/24/3 17/21/3 19/25/3
|
||||
f 20/26/4 22/22/4 24/27/4
|
||||
f 26/28/2 27/29/2 25/30/2
|
||||
f 29/31/6 26/28/6 25/30/6
|
||||
f 31/32/3 25/30/3 27/33/3
|
||||
f 28/34/4 30/35/4 32/36/4
|
||||
f 34/37/7 35/38/7 33/39/7
|
||||
f 39/40/5 44/41/5 40/42/5
|
||||
f 40/42/8 37/43/8 39/40/8
|
||||
f 39/44/3 33/45/3 35/46/3
|
||||
f 40/47/4 34/48/4 38/49/4
|
||||
f 43/50/8 48/51/8 44/41/8
|
||||
f 35/46/3 43/50/3 39/44/3
|
||||
f 40/47/4 41/52/4 36/53/4
|
||||
f 36/54/6 42/55/6 35/38/6
|
||||
f 45/56/9 47/57/9 46/58/9
|
||||
f 42/55/3 47/57/3 43/50/3
|
||||
f 44/41/4 45/59/4 41/52/4
|
||||
f 41/60/7 46/58/7 42/55/7
|
||||
f 50/61/9 51/62/9 49/63/9
|
||||
f 55/64/6 60/65/6 56/66/6
|
||||
f 56/66/10 53/67/10 55/64/10
|
||||
f 55/68/3 49/69/3 51/70/3
|
||||
f 56/71/4 50/72/4 54/73/4
|
||||
f 59/74/10 64/75/10 60/65/10
|
||||
f 51/70/3 59/74/3 55/68/3
|
||||
f 56/71/4 57/76/4 52/77/4
|
||||
f 52/78/2 58/79/2 51/62/2
|
||||
f 61/80/8 63/81/8 62/82/8
|
||||
f 59/74/3 62/82/3 63/81/3
|
||||
f 60/65/4 61/83/4 57/76/4
|
||||
f 57/84/9 62/82/9 58/79/9
|
||||
f 66/85/8 67/86/8 65/87/8
|
||||
f 72/88/2 75/89/2 76/90/2
|
||||
f 71/91/7 70/92/7 69/93/7
|
||||
f 71/94/3 65/95/3 67/96/3
|
||||
f 68/97/4 70/98/4 72/99/4
|
||||
f 75/89/7 80/100/7 76/90/7
|
||||
f 67/96/3 75/89/3 71/94/3
|
||||
f 72/99/4 73/101/4 68/97/4
|
||||
f 68/102/1 74/103/1 67/86/1
|
||||
f 77/104/10 79/105/10 78/106/10
|
||||
f 74/103/3 79/105/3 75/89/3
|
||||
f 76/90/4 77/107/4 73/101/4
|
||||
f 74/103/8 77/108/8 78/106/8
|
||||
f 82/109/10 83/110/10 81/111/10
|
||||
f 87/112/1 92/113/1 88/114/1
|
||||
f 88/114/9 85/115/9 87/112/9
|
||||
f 87/116/3 81/117/3 83/118/3
|
||||
f 88/119/4 82/120/4 86/121/4
|
||||
f 91/122/9 96/123/9 92/113/9
|
||||
f 83/118/3 91/122/3 87/116/3
|
||||
f 88/119/4 89/124/4 84/125/4
|
||||
f 83/110/5 89/126/5 90/127/5
|
||||
f 93/128/7 95/129/7 94/130/7
|
||||
f 90/127/3 95/129/3 91/122/3
|
||||
f 92/113/4 93/131/4 89/124/4
|
||||
f 90/127/10 93/132/10 94/130/10
|
||||
f 106/133/2 100/134/2 102/135/2
|
||||
f 98/136/6 107/137/6 102/138/6
|
||||
f 106/139/1 97/140/1 100/141/1
|
||||
f 99/142/11 102/143/11 101/144/11
|
||||
f 99/142/12 100/145/12 97/146/12
|
||||
f 108/147/13 105/148/13 104/149/13
|
||||
f 108/147/14 103/150/14 106/151/14
|
||||
f 114/152/5 118/153/5 119/154/5
|
||||
f 110/155/6 119/156/6 117/157/6
|
||||
f 109/158/1 118/159/1 112/160/1
|
||||
f 114/161/15 111/162/15 113/163/15
|
||||
f 111/162/16 112/164/16 113/163/16
|
||||
f 117/165/17 120/166/17 116/167/17
|
||||
f 120/166/18 115/168/18 116/167/18
|
||||
f 122/169/5 123/170/5 121/171/5
|
||||
f 124/172/6 127/173/6 123/170/6
|
||||
f 128/174/2 125/175/2 127/176/2
|
||||
f 126/177/1 121/171/1 125/175/1
|
||||
f 124/172/4 126/178/4 128/179/4
|
||||
f 131/180/2 130/181/2 129/182/2
|
||||
f 135/183/6 132/184/6 131/180/6
|
||||
f 133/185/5 136/186/5 135/187/5
|
||||
f 129/182/1 134/188/1 133/185/1
|
||||
f 134/189/4 132/184/4 136/190/4
|
||||
f 2/1/1 4/191/1 3/2/1
|
||||
f 6/4/2 2/1/2 1/3/2
|
||||
f 7/6/3 5/5/3 1/3/3
|
||||
f 4/8/4 2/1/4 6/4/4
|
||||
f 10/10/5 12/192/5 11/11/5
|
||||
f 14/13/1 10/10/1 9/12/1
|
||||
f 15/15/3 13/14/3 9/12/3
|
||||
f 12/17/4 10/10/4 14/13/4
|
||||
f 18/19/6 20/193/6 19/20/6
|
||||
f 22/22/5 18/19/5 17/21/5
|
||||
f 23/24/3 21/23/3 17/21/3
|
||||
f 20/26/4 18/19/4 22/22/4
|
||||
f 26/28/2 28/194/2 27/29/2
|
||||
f 29/31/6 30/35/6 26/28/6
|
||||
f 31/32/3 29/31/3 25/30/3
|
||||
f 28/34/4 26/28/4 30/35/4
|
||||
f 34/37/7 36/54/7 35/38/7
|
||||
f 39/40/5 43/50/5 44/41/5
|
||||
f 40/42/8 38/195/8 37/43/8
|
||||
f 39/44/3 37/196/3 33/45/3
|
||||
f 40/47/4 36/53/4 34/48/4
|
||||
f 43/50/8 47/57/8 48/51/8
|
||||
f 35/46/3 42/55/3 43/50/3
|
||||
f 40/47/4 44/41/4 41/52/4
|
||||
f 36/54/6 41/60/6 42/55/6
|
||||
f 45/56/9 48/197/9 47/57/9
|
||||
f 42/55/3 46/58/3 47/57/3
|
||||
f 44/41/4 48/51/4 45/59/4
|
||||
f 41/60/7 45/198/7 46/58/7
|
||||
f 50/61/9 52/78/9 51/62/9
|
||||
f 55/64/6 59/74/6 60/65/6
|
||||
f 56/66/10 54/199/10 53/67/10
|
||||
f 55/68/3 53/200/3 49/69/3
|
||||
f 56/71/4 52/77/4 50/72/4
|
||||
f 59/74/10 63/81/10 64/75/10
|
||||
f 51/70/3 58/79/3 59/74/3
|
||||
f 56/71/4 60/65/4 57/76/4
|
||||
f 52/78/2 57/84/2 58/79/2
|
||||
f 61/80/8 64/201/8 63/81/8
|
||||
f 59/74/3 58/79/3 62/82/3
|
||||
f 60/65/4 64/75/4 61/83/4
|
||||
f 57/84/9 61/202/9 62/82/9
|
||||
f 66/85/8 68/102/8 67/86/8
|
||||
f 72/88/2 71/91/2 75/89/2
|
||||
f 71/91/7 72/88/7 70/92/7
|
||||
f 71/94/3 69/203/3 65/95/3
|
||||
f 68/97/4 66/204/4 70/98/4
|
||||
f 75/89/7 79/105/7 80/100/7
|
||||
f 67/96/3 74/103/3 75/89/3
|
||||
f 72/99/4 76/90/4 73/101/4
|
||||
f 68/102/1 73/205/1 74/103/1
|
||||
f 77/104/10 80/206/10 79/105/10
|
||||
f 74/103/3 78/106/3 79/105/3
|
||||
f 76/90/4 80/100/4 77/107/4
|
||||
f 74/103/8 73/205/8 77/108/8
|
||||
f 82/109/10 84/207/10 83/110/10
|
||||
f 87/112/1 91/122/1 92/113/1
|
||||
f 88/114/9 86/208/9 85/115/9
|
||||
f 87/116/3 85/209/3 81/117/3
|
||||
f 88/119/4 84/125/4 82/120/4
|
||||
f 91/122/9 95/129/9 96/123/9
|
||||
f 83/118/3 90/127/3 91/122/3
|
||||
f 88/119/4 92/113/4 89/124/4
|
||||
f 83/110/5 84/207/5 89/126/5
|
||||
f 93/128/7 96/210/7 95/129/7
|
||||
f 90/127/3 94/130/3 95/129/3
|
||||
f 92/113/4 96/123/4 93/131/4
|
||||
f 90/127/10 89/126/10 93/132/10
|
||||
f 100/134/2 101/211/2 102/135/2
|
||||
f 102/135/2 107/212/2 106/133/2
|
||||
f 107/212/2 108/213/2 106/133/2
|
||||
f 98/136/6 105/214/6 107/137/6
|
||||
f 106/139/1 103/215/1 97/140/1
|
||||
f 99/142/11 98/216/11 102/143/11
|
||||
f 99/142/12 101/144/12 100/145/12
|
||||
f 108/147/13 107/217/13 105/148/13
|
||||
f 108/147/14 104/149/14 103/150/14
|
||||
f 114/152/5 113/218/5 112/219/5
|
||||
f 112/219/5 118/153/5 114/152/5
|
||||
f 118/153/5 120/220/5 119/154/5
|
||||
f 110/155/6 114/221/6 119/156/6
|
||||
f 109/158/1 115/222/1 118/159/1
|
||||
f 114/161/15 110/223/15 111/162/15
|
||||
f 111/162/16 109/224/16 112/164/16
|
||||
f 117/165/17 119/225/17 120/166/17
|
||||
f 120/166/18 118/226/18 115/168/18
|
||||
f 122/169/5 124/172/5 123/170/5
|
||||
f 124/172/6 128/227/6 127/173/6
|
||||
f 128/174/2 126/177/2 125/175/2
|
||||
f 126/177/1 122/169/1 121/171/1
|
||||
f 124/172/4 122/169/4 126/178/4
|
||||
f 131/180/2 132/184/2 130/181/2
|
||||
f 135/183/6 136/228/6 132/184/6
|
||||
f 133/185/5 134/188/5 136/186/5
|
||||
f 129/182/1 130/181/1 134/188/1
|
||||
f 134/189/4 130/181/4 132/184/4
|
||||
s 1
|
||||
f 138/229/19 139/230/20 137/231/21
|
||||
f 140/232/22 141/233/23 139/230/20
|
||||
f 142/234/24 143/235/25 141/233/23
|
||||
f 144/236/26 145/237/27 143/238/25
|
||||
f 146/239/28 147/240/29 145/237/27
|
||||
f 148/241/30 149/242/31 147/240/29
|
||||
f 150/243/32 151/244/33 149/242/31
|
||||
f 152/245/34 153/246/35 151/244/33
|
||||
f 154/247/36 155/248/37 153/246/35
|
||||
f 156/249/38 157/250/39 155/248/37
|
||||
f 144/236/26 189/251/40 146/239/28
|
||||
f 158/252/41 159/253/42 157/250/39
|
||||
f 160/254/43 137/231/21 159/253/42
|
||||
f 141/233/23 162/255/44 139/230/20
|
||||
f 164/256/45 175/257/46 163/258/47
|
||||
f 157/250/39 170/259/48 155/248/37
|
||||
f 155/248/37 169/260/49 153/246/35
|
||||
f 153/246/35 168/261/50 151/244/33
|
||||
f 151/244/33 167/262/51 149/242/31
|
||||
f 149/242/31 166/263/52 147/240/29
|
||||
f 147/240/29 165/264/53 145/237/27
|
||||
f 145/237/27 164/265/45 143/238/25
|
||||
f 137/231/21 172/266/54 159/253/42
|
||||
f 139/230/20 161/267/55 137/231/21
|
||||
f 143/235/25 163/268/47 141/233/23
|
||||
f 159/253/42 171/269/56 157/250/39
|
||||
f 176/270/57 180/271/58 184/272/59
|
||||
f 171/273/56 182/274/60 170/275/48
|
||||
f 168/276/50 179/277/61 167/278/51
|
||||
f 165/279/53 176/280/57 164/281/45
|
||||
f 172/282/54 183/283/62 171/273/56
|
||||
f 162/284/44 173/285/63 161/286/55
|
||||
f 169/287/49 180/288/58 168/276/50
|
||||
f 166/289/52 177/290/64 165/279/53
|
||||
f 161/286/55 184/291/59 172/282/54
|
||||
f 163/258/47 174/292/65 162/284/44
|
||||
f 170/275/48 181/293/66 169/287/49
|
||||
f 167/278/51 178/294/67 166/289/52
|
||||
f 191/295/68 190/296/69 197/297/4
|
||||
f 160/254/43 186/298/70 138/229/19
|
||||
f 138/229/19 185/299/71 140/232/22
|
||||
f 142/234/24 188/300/72 144/301/26
|
||||
f 158/252/41 196/302/73 160/254/43
|
||||
f 140/232/22 187/303/74 142/234/24
|
||||
f 156/249/38 195/304/75 158/252/41
|
||||
f 156/249/38 193/305/76 194/306/77
|
||||
f 152/245/34 193/307/76 154/247/36
|
||||
f 150/243/32 192/308/78 152/245/34
|
||||
f 148/241/30 191/295/68 150/243/32
|
||||
f 146/239/28 190/309/69 148/241/30
|
||||
f 188/300/72 187/310/74 197/311/4
|
||||
f 195/304/75 194/312/77 197/313/4
|
||||
f 192/308/78 191/314/68 197/315/4
|
||||
f 189/251/40 188/316/72 197/317/4
|
||||
f 196/302/73 195/318/75 197/319/4
|
||||
f 185/299/71 186/320/70 197/321/4
|
||||
f 193/307/76 192/322/78 197/323/4
|
||||
f 190/309/69 189/324/40 197/325/4
|
||||
f 186/298/70 196/326/73 197/327/4
|
||||
f 187/303/74 185/328/71 197/329/4
|
||||
f 194/306/77 193/305/76 197/330/4
|
||||
f 138/229/19 140/232/22 139/230/20
|
||||
f 140/232/22 142/234/24 141/233/23
|
||||
f 142/234/24 144/301/26 143/235/25
|
||||
f 144/236/26 146/239/28 145/237/27
|
||||
f 146/239/28 148/241/30 147/240/29
|
||||
f 148/241/30 150/243/32 149/242/31
|
||||
f 150/243/32 152/245/34 151/244/33
|
||||
f 152/245/34 154/247/36 153/246/35
|
||||
f 154/247/36 156/249/38 155/248/37
|
||||
f 156/249/38 158/252/41 157/250/39
|
||||
f 144/236/26 188/316/72 189/251/40
|
||||
f 158/252/41 160/254/43 159/253/42
|
||||
f 160/254/43 138/229/19 137/231/21
|
||||
f 141/233/23 163/331/47 162/255/44
|
||||
f 164/256/45 176/332/57 175/257/46
|
||||
f 157/250/39 171/333/56 170/259/48
|
||||
f 155/248/37 170/334/48 169/260/49
|
||||
f 153/246/35 169/335/49 168/261/50
|
||||
f 151/244/33 168/336/50 167/262/51
|
||||
f 149/242/31 167/337/51 166/263/52
|
||||
f 147/240/29 166/338/52 165/264/53
|
||||
f 145/237/27 165/339/53 164/265/45
|
||||
f 137/231/21 161/340/55 172/266/54
|
||||
f 139/230/20 162/341/44 161/267/55
|
||||
f 143/235/25 164/342/45 163/268/47
|
||||
f 159/253/42 172/343/54 171/269/56
|
||||
f 184/272/59 173/344/63 176/270/57
|
||||
f 173/344/63 174/345/65 176/270/57
|
||||
f 174/345/65 175/346/46 176/270/57
|
||||
f 176/270/57 177/347/64 178/348/67
|
||||
f 178/348/67 179/349/61 176/270/57
|
||||
f 179/349/61 180/271/58 176/270/57
|
||||
f 180/271/58 181/350/66 182/351/60
|
||||
f 182/351/60 183/352/62 184/272/59
|
||||
f 180/271/58 182/351/60 184/272/59
|
||||
f 171/273/56 183/283/62 182/274/60
|
||||
f 168/276/50 180/288/58 179/277/61
|
||||
f 165/279/53 177/290/64 176/280/57
|
||||
f 172/282/54 184/291/59 183/283/62
|
||||
f 162/284/44 174/292/65 173/285/63
|
||||
f 169/287/49 181/293/66 180/288/58
|
||||
f 166/289/52 178/294/67 177/290/64
|
||||
f 161/286/55 173/285/63 184/291/59
|
||||
f 163/258/47 175/257/46 174/292/65
|
||||
f 170/275/48 182/274/60 181/293/66
|
||||
f 167/278/51 179/277/61 178/294/67
|
||||
f 160/254/43 196/326/73 186/298/70
|
||||
f 138/229/19 186/320/70 185/299/71
|
||||
f 142/234/24 187/310/74 188/300/72
|
||||
f 158/252/41 195/318/75 196/302/73
|
||||
f 140/232/22 185/328/71 187/303/74
|
||||
f 156/249/38 194/312/77 195/304/75
|
||||
f 156/249/38 154/247/36 193/305/76
|
||||
f 152/245/34 192/322/78 193/307/76
|
||||
f 150/243/32 191/314/68 192/308/78
|
||||
f 148/241/30 190/296/69 191/295/68
|
||||
f 146/239/28 189/324/40 190/309/69
|
||||
799
src/main/resources/assets/hbm/models/bombs/dud_nuke.obj
Normal file
@ -0,0 +1,799 @@
|
||||
# Blender v2.79 (sub 7) OBJ File: 'flat fuck.blend'
|
||||
# www.blender.org
|
||||
mtllib flat_fuck.mtl
|
||||
o Cube.001_Cube.002
|
||||
v 0.218750 -0.031250 -3.812500
|
||||
v 0.218750 0.031250 -3.812500
|
||||
v 0.218750 -0.031250 -4.187500
|
||||
v 0.218750 0.031250 -4.187500
|
||||
v 0.406250 -0.031250 -4.000000
|
||||
v 0.343750 -0.031250 -3.812500
|
||||
v 0.343750 0.031250 -3.812500
|
||||
v 0.406250 0.031250 -4.000000
|
||||
v 0.343750 -0.031250 -4.187500
|
||||
v 0.406250 -0.031250 -4.125000
|
||||
v 0.406250 0.031250 -4.125000
|
||||
v 0.343750 0.031250 -4.187500
|
||||
v -0.218750 -0.031250 -3.812500
|
||||
v -0.218750 0.031250 -3.812500
|
||||
v -0.218750 -0.031250 -4.187500
|
||||
v -0.218750 0.031250 -4.187500
|
||||
v -0.406250 -0.031250 -4.000000
|
||||
v -0.343750 -0.031250 -3.812500
|
||||
v -0.343750 0.031250 -3.812500
|
||||
v -0.406250 0.031250 -4.000000
|
||||
v -0.343750 -0.031250 -4.187500
|
||||
v -0.406250 -0.031250 -4.125000
|
||||
v -0.406250 0.031250 -4.125000
|
||||
v -0.343750 0.031250 -4.187500
|
||||
v -0.031250 0.572454 -0.406250
|
||||
v -0.031250 0.697454 -0.406250
|
||||
v -0.031250 0.572454 -0.593750
|
||||
v -0.031250 0.697454 -0.593750
|
||||
v 0.031250 0.572454 -0.406250
|
||||
v 0.031250 0.697454 -0.406250
|
||||
v 0.031250 0.572454 -0.593750
|
||||
v 0.031250 0.697454 -0.593750
|
||||
v -0.031250 0.759954 -0.468750
|
||||
v 0.031250 0.759954 -0.468750
|
||||
v -0.511384 0.259164 -0.406250
|
||||
v -0.619638 0.321664 -0.406250
|
||||
v -0.511385 0.259164 -0.593750
|
||||
v -0.619638 0.321664 -0.593750
|
||||
v -0.480135 0.313290 -0.406250
|
||||
v -0.588388 0.375790 -0.406250
|
||||
v -0.480135 0.313290 -0.593750
|
||||
v -0.588388 0.375790 -0.593750
|
||||
v -0.673764 0.352914 -0.468750
|
||||
v -0.642514 0.407040 -0.468750
|
||||
v -0.480134 -0.313290 -0.406250
|
||||
v -0.588388 -0.375790 -0.406250
|
||||
v -0.480134 -0.313290 -0.593750
|
||||
v -0.588388 -0.375790 -0.593750
|
||||
v -0.511384 -0.259164 -0.406250
|
||||
v -0.619638 -0.321664 -0.406250
|
||||
v -0.511384 -0.259164 -0.593750
|
||||
v -0.619638 -0.321664 -0.593750
|
||||
v -0.642514 -0.407040 -0.468750
|
||||
v -0.673764 -0.352914 -0.468750
|
||||
v 0.031250 -0.572454 -0.406250
|
||||
v 0.031250 -0.697454 -0.406250
|
||||
v 0.031250 -0.572454 -0.593750
|
||||
v 0.031250 -0.697454 -0.593750
|
||||
v -0.031250 -0.572454 -0.406250
|
||||
v -0.031250 -0.697454 -0.406250
|
||||
v -0.031250 -0.572454 -0.593750
|
||||
v -0.031250 -0.697454 -0.593750
|
||||
v 0.031250 -0.759954 -0.468750
|
||||
v -0.031250 -0.759954 -0.468750
|
||||
v 0.511385 -0.259163 -0.406250
|
||||
v 0.619638 -0.321663 -0.406250
|
||||
v 0.511385 -0.259163 -0.593750
|
||||
v 0.619638 -0.321663 -0.593750
|
||||
v 0.480135 -0.313290 -0.406250
|
||||
v 0.588388 -0.375790 -0.406250
|
||||
v 0.480135 -0.313290 -0.593750
|
||||
v 0.588388 -0.375790 -0.593750
|
||||
v 0.673764 -0.352913 -0.468750
|
||||
v 0.642515 -0.407040 -0.468750
|
||||
v 0.480134 0.313290 -0.406250
|
||||
v 0.588388 0.375790 -0.406250
|
||||
v 0.480134 0.313290 -0.593750
|
||||
v 0.588388 0.375790 -0.593750
|
||||
v 0.511384 0.259164 -0.406250
|
||||
v 0.619638 0.321664 -0.406250
|
||||
v 0.511384 0.259164 -0.593750
|
||||
v 0.619638 0.321664 -0.593750
|
||||
v 0.642514 0.407040 -0.468750
|
||||
v 0.673764 0.352914 -0.468750
|
||||
v -0.176777 0.132583 -3.625000
|
||||
v -0.176777 0.132583 -4.375000
|
||||
v -0.132583 0.176777 -3.625000
|
||||
v -0.132583 0.176777 -4.375000
|
||||
v -0.574524 0.530330 -3.625000
|
||||
v -0.618719 0.574524 -3.687500
|
||||
v -0.618719 0.574524 -4.312500
|
||||
v -0.574524 0.530330 -4.375000
|
||||
v -0.574524 0.618718 -3.687500
|
||||
v -0.530330 0.574524 -3.625000
|
||||
v -0.530330 0.574524 -4.375000
|
||||
v -0.574524 0.618718 -4.312500
|
||||
v -0.132583 -0.176777 -3.625000
|
||||
v -0.132583 -0.176777 -4.375000
|
||||
v -0.176777 -0.132583 -3.625000
|
||||
v -0.176777 -0.132583 -4.375000
|
||||
v -0.530330 -0.574524 -3.625000
|
||||
v -0.574525 -0.618719 -3.687500
|
||||
v -0.574525 -0.618719 -4.312500
|
||||
v -0.530331 -0.574524 -4.375000
|
||||
v -0.618719 -0.574524 -3.687500
|
||||
v -0.574525 -0.530330 -3.625000
|
||||
v -0.574525 -0.530330 -4.375000
|
||||
v -0.618719 -0.574524 -4.312500
|
||||
v 0.176776 -0.132583 -3.624999
|
||||
v 0.176776 -0.132583 -4.374999
|
||||
v 0.132582 -0.176777 -3.624999
|
||||
v 0.132582 -0.176777 -4.374999
|
||||
v 0.574524 -0.530331 -3.624999
|
||||
v 0.618718 -0.574525 -3.687499
|
||||
v 0.618718 -0.574525 -4.312499
|
||||
v 0.574524 -0.530331 -4.374999
|
||||
v 0.574524 -0.618719 -3.687499
|
||||
v 0.530330 -0.574525 -3.624999
|
||||
v 0.530330 -0.574525 -4.374999
|
||||
v 0.574524 -0.618719 -4.312499
|
||||
v 0.132583 0.176776 -3.624999
|
||||
v 0.132583 0.176776 -4.374999
|
||||
v 0.176777 0.132582 -3.624999
|
||||
v 0.176777 0.132582 -4.374999
|
||||
v 0.530330 0.574524 -3.624999
|
||||
v 0.574524 0.618718 -3.687499
|
||||
v 0.574524 0.618718 -4.312499
|
||||
v 0.530330 0.574524 -4.374999
|
||||
v 0.618719 0.574524 -3.687499
|
||||
v 0.574524 0.530330 -3.624999
|
||||
v 0.574524 0.530330 -4.374999
|
||||
v 0.618719 0.574524 -4.312499
|
||||
v 0.000000 0.603704 -1.500000
|
||||
v 0.000000 0.603704 1.500000
|
||||
v 0.301852 0.522823 -1.500000
|
||||
v 0.301852 0.522823 1.500000
|
||||
v 0.522823 0.301852 -1.500000
|
||||
v 0.522823 0.301852 1.500000
|
||||
v 0.603704 0.000000 -1.500000
|
||||
v 0.603704 -0.000000 1.500000
|
||||
v 0.522823 -0.301852 -1.500000
|
||||
v 0.522823 -0.301852 1.500000
|
||||
v 0.301852 -0.522823 -1.500000
|
||||
v 0.301852 -0.522823 1.500000
|
||||
v 0.000000 -0.603704 -1.500000
|
||||
v 0.000000 -0.603704 1.500000
|
||||
v -0.301852 -0.522823 -1.500000
|
||||
v -0.301852 -0.522823 1.500000
|
||||
v -0.522823 -0.301852 -1.500000
|
||||
v -0.522823 -0.301852 1.500000
|
||||
v -0.603704 -0.000000 -1.500000
|
||||
v -0.603704 -0.000000 1.500000
|
||||
v -0.522823 0.301852 -1.500000
|
||||
v -0.522823 0.301852 1.500000
|
||||
v -0.301852 0.522823 -1.500000
|
||||
v -0.301852 0.522823 1.500000
|
||||
v -0.000000 0.241482 -4.500000
|
||||
v 0.120741 0.209129 -4.500000
|
||||
v 0.209129 0.120741 -4.500000
|
||||
v 0.241481 0.000000 -4.500000
|
||||
v 0.209129 -0.120741 -4.500000
|
||||
v 0.120741 -0.209129 -4.500000
|
||||
v 0.000000 -0.241481 -4.500000
|
||||
v -0.120741 -0.209129 -4.500000
|
||||
v -0.209129 -0.120741 -4.500000
|
||||
v -0.241481 0.000000 -4.500000
|
||||
v -0.209129 0.120741 -4.500000
|
||||
v -0.120741 0.209129 -4.500000
|
||||
vt 0.731034 0.370968
|
||||
vt 0.724138 0.338710
|
||||
vt 0.724138 0.370968
|
||||
vt 0.731034 0.338710
|
||||
vt 0.751724 0.387097
|
||||
vt 0.765517 0.387097
|
||||
vt 0.751724 0.403226
|
||||
vt 0.765517 0.403226
|
||||
vt 0.772414 0.338710
|
||||
vt 0.779310 0.370968
|
||||
vt 0.779310 0.338710
|
||||
vt 0.779310 0.387097
|
||||
vt 0.772414 0.370968
|
||||
vt 0.772414 0.387097
|
||||
vt 0.731034 0.419355
|
||||
vt 0.703448 0.387097
|
||||
vt 0.731034 0.435484
|
||||
vt 0.724138 0.467742
|
||||
vt 0.731034 0.467742
|
||||
vt 0.682759 0.435484
|
||||
vt 0.682759 0.467742
|
||||
vt 0.703448 0.483871
|
||||
vt 0.703448 0.500000
|
||||
vt 0.689655 0.483871
|
||||
vt 0.689655 0.500000
|
||||
vt 0.675862 0.467742
|
||||
vt 0.675862 0.435484
|
||||
vt 0.675862 0.483871
|
||||
vt 0.682759 0.483871
|
||||
vt 0.724138 0.516129
|
||||
vt 0.751724 0.483871
|
||||
vt 0.765517 0.483871
|
||||
vt 0.772414 0.467742
|
||||
vt 0.724138 0.209677
|
||||
vt 0.703448 0.177419
|
||||
vt 0.724138 0.177419
|
||||
vt 0.703448 0.209677
|
||||
vt 0.696552 0.177419
|
||||
vt 0.696552 0.209677
|
||||
vt 0.675862 0.177419
|
||||
vt 0.731034 0.209677
|
||||
vt 0.731034 0.177419
|
||||
vt 0.717241 0.225806
|
||||
vt 0.724138 0.225806
|
||||
vt 0.696552 0.241935
|
||||
vt 0.675862 0.209677
|
||||
vt 0.682759 0.225806
|
||||
vt 0.786207 0.290323
|
||||
vt 0.765517 0.258065
|
||||
vt 0.786207 0.258065
|
||||
vt 0.758621 0.290323
|
||||
vt 0.758621 0.258065
|
||||
vt 0.737931 0.258065
|
||||
vt 0.793103 0.258065
|
||||
vt 0.765517 0.290323
|
||||
vt 0.779310 0.306452
|
||||
vt 0.793103 0.290323
|
||||
vt 0.786207 0.306452
|
||||
vt 0.758621 0.322581
|
||||
vt 0.737931 0.290323
|
||||
vt 0.744828 0.306452
|
||||
vt 0.786207 0.209677
|
||||
vt 0.765517 0.177419
|
||||
vt 0.786207 0.177419
|
||||
vt 0.758621 0.209677
|
||||
vt 0.758621 0.177419
|
||||
vt 0.737931 0.209677
|
||||
vt 0.737931 0.177419
|
||||
vt 0.793103 0.209677
|
||||
vt 0.793103 0.177419
|
||||
vt 0.765517 0.209677
|
||||
vt 0.779310 0.225806
|
||||
vt 0.786207 0.225806
|
||||
vt 0.765517 0.241935
|
||||
vt 0.758621 0.241935
|
||||
vt 0.744828 0.225806
|
||||
vt 0.724138 0.129032
|
||||
vt 0.703448 0.096774
|
||||
vt 0.724138 0.096774
|
||||
vt 0.703448 0.129032
|
||||
vt 0.696552 0.096774
|
||||
vt 0.675862 0.129032
|
||||
vt 0.675862 0.096774
|
||||
vt 0.731034 0.129032
|
||||
vt 0.731034 0.096774
|
||||
vt 0.717241 0.145161
|
||||
vt 0.731034 0.145161
|
||||
vt 0.724138 0.145161
|
||||
vt 0.696552 0.161290
|
||||
vt 0.696552 0.129032
|
||||
vt 0.682759 0.145161
|
||||
vt 0.786207 0.129032
|
||||
vt 0.765517 0.096774
|
||||
vt 0.786207 0.096774
|
||||
vt 0.765517 0.129032
|
||||
vt 0.758621 0.096774
|
||||
vt 0.758621 0.129032
|
||||
vt 0.737931 0.096774
|
||||
vt 0.793103 0.129032
|
||||
vt 0.793103 0.096774
|
||||
vt 0.779310 0.145161
|
||||
vt 0.793103 0.145161
|
||||
vt 0.786207 0.145161
|
||||
vt 0.758621 0.161290
|
||||
vt 0.737931 0.129032
|
||||
vt 0.744828 0.145161
|
||||
vt 0.724138 0.258065
|
||||
vt 0.703448 0.290323
|
||||
vt 0.703448 0.258065
|
||||
vt 0.696552 0.258065
|
||||
vt 0.675862 0.290323
|
||||
vt 0.675862 0.258065
|
||||
vt 0.731034 0.290323
|
||||
vt 0.731034 0.258065
|
||||
vt 0.724138 0.290323
|
||||
vt 0.717241 0.306452
|
||||
vt 0.731034 0.306452
|
||||
vt 0.724138 0.306452
|
||||
vt 0.696552 0.322581
|
||||
vt 0.696552 0.290323
|
||||
vt 0.682759 0.306452
|
||||
vt 0.917241 0.774194
|
||||
vt 0.986207 0.790323
|
||||
vt 0.917241 0.790323
|
||||
vt 0.827586 0.774194
|
||||
vt 0.820690 0.758065
|
||||
vt 0.820690 0.612903
|
||||
vt 0.910345 0.758065
|
||||
vt 0.910345 0.612903
|
||||
vt 0.903448 0.612903
|
||||
vt 0.910345 0.774194
|
||||
vt 0.903448 0.758065
|
||||
vt 0.813793 0.774194
|
||||
vt 0.820690 0.774194
|
||||
vt 0.813793 0.758065
|
||||
vt 0.813793 0.612903
|
||||
vt 0.917241 0.580645
|
||||
vt 0.986207 0.596774
|
||||
vt 0.917241 0.596774
|
||||
vt 0.827586 0.580645
|
||||
vt 0.820690 0.564516
|
||||
vt 0.820690 0.419355
|
||||
vt 0.910345 0.564516
|
||||
vt 0.910345 0.419355
|
||||
vt 0.903448 0.419355
|
||||
vt 0.910345 0.580645
|
||||
vt 0.903448 0.564516
|
||||
vt 0.813793 0.580645
|
||||
vt 0.820690 0.580645
|
||||
vt 0.813793 0.419355
|
||||
vt 0.917241 0.387097
|
||||
vt 0.986207 0.403226
|
||||
vt 0.917241 0.403226
|
||||
vt 0.827586 0.387097
|
||||
vt 0.820690 0.370968
|
||||
vt 0.820690 0.225806
|
||||
vt 0.910345 0.370968
|
||||
vt 0.910345 0.225806
|
||||
vt 0.903448 0.370968
|
||||
vt 0.903448 0.225806
|
||||
vt 0.903448 0.387097
|
||||
vt 0.910345 0.387097
|
||||
vt 0.820690 0.387097
|
||||
vt 0.813793 0.370968
|
||||
vt 0.813793 0.225806
|
||||
vt 0.917241 0.983871
|
||||
vt 0.986207 0.967742
|
||||
vt 0.986207 0.983871
|
||||
vt 0.827586 0.967742
|
||||
vt 0.820690 0.951613
|
||||
vt 0.820690 0.806452
|
||||
vt 0.917241 0.967742
|
||||
vt 0.910345 0.951613
|
||||
vt 0.910345 0.806452
|
||||
vt 0.903448 0.951613
|
||||
vt 0.903448 0.806452
|
||||
vt 0.903448 0.967742
|
||||
vt 0.910345 0.967742
|
||||
vt 0.820690 0.967742
|
||||
vt 0.813793 0.951613
|
||||
vt 0.813793 0.806452
|
||||
vt 0.687135 0.905981
|
||||
vt 0.742256 0.683307
|
||||
vt 0.797152 0.906284
|
||||
vt 0.729378 0.596377
|
||||
vt 0.716764 0.648801
|
||||
vt 0.677939 0.597702
|
||||
vt 0.724138 0.419355
|
||||
vt 0.682759 0.338710
|
||||
vt 0.682759 0.370968
|
||||
vt 0.689655 0.387097
|
||||
vt 0.724138 0.435484
|
||||
vt 0.731034 0.516129
|
||||
vt 0.772414 0.435484
|
||||
vt 0.731034 0.225806
|
||||
vt 0.703448 0.241935
|
||||
vt 0.793103 0.306452
|
||||
vt 0.765517 0.322581
|
||||
vt 0.793103 0.225806
|
||||
vt 0.703448 0.161290
|
||||
vt 0.765517 0.161290
|
||||
vt 0.703448 0.322581
|
||||
vt 0.986207 0.774194
|
||||
vt 0.896552 0.774194
|
||||
vt 0.993103 0.612903
|
||||
vt 0.993103 0.758065
|
||||
vt 0.903448 0.774194
|
||||
vt 0.986207 0.580645
|
||||
vt 0.896552 0.580645
|
||||
vt 0.993103 0.419355
|
||||
vt 0.993103 0.564516
|
||||
vt 0.903448 0.580645
|
||||
vt 0.813793 0.564516
|
||||
vt 0.986207 0.387097
|
||||
vt 0.896552 0.387097
|
||||
vt 0.993103 0.225806
|
||||
vt 0.993103 0.370968
|
||||
vt 0.813793 0.387097
|
||||
vt 0.896552 0.967742
|
||||
vt 0.993103 0.806452
|
||||
vt 0.993103 0.951613
|
||||
vt 0.813793 0.967742
|
||||
vt 0.773875 0.960593
|
||||
vt 0.742106 0.980407
|
||||
vt 0.710357 0.960418
|
||||
vt 0.678663 0.831683
|
||||
vt 0.687210 0.757431
|
||||
vt 0.710486 0.703122
|
||||
vt 0.774005 0.703296
|
||||
vt 0.797226 0.757733
|
||||
vt 0.805699 0.832032
|
||||
vt 0.703942 0.657191
|
||||
vt 0.691044 0.649463
|
||||
vt 0.681527 0.627689
|
||||
vt 0.681243 0.567538
|
||||
vt 0.690554 0.545279
|
||||
vt 0.703375 0.536889
|
||||
vt 0.716273 0.544617
|
||||
vt 0.725791 0.566391
|
||||
vt 0.726074 0.626541
|
||||
vt 0.006897 0.500000
|
||||
vt 0.337931 0.419355
|
||||
vt 0.337931 0.500000
|
||||
vt 0.006897 0.338710
|
||||
vt 0.337931 0.338710
|
||||
vt 0.337931 0.258065
|
||||
vt 0.006897 0.258065
|
||||
vt 0.337931 0.177419
|
||||
vt 0.006897 0.177419
|
||||
vt 0.337931 0.096774
|
||||
vt 0.006897 0.096774
|
||||
vt 0.337931 0.016129
|
||||
vt 0.006897 0.983871
|
||||
vt 0.337931 0.903226
|
||||
vt 0.337931 0.983871
|
||||
vt 0.006897 0.903226
|
||||
vt 0.337931 0.822581
|
||||
vt 0.006897 0.822581
|
||||
vt 0.337931 0.741935
|
||||
vt 0.006897 0.741935
|
||||
vt 0.337931 0.661290
|
||||
vt 0.006897 0.661290
|
||||
vt 0.337931 0.580645
|
||||
vt 0.006897 0.580645
|
||||
vt 0.668966 0.967742
|
||||
vt 0.668966 0.048387
|
||||
vt 0.668966 0.080645
|
||||
vt 0.668966 0.161290
|
||||
vt 0.668966 0.241935
|
||||
vt 0.668966 0.564516
|
||||
vt 0.668966 0.451613
|
||||
vt 0.668966 0.483871
|
||||
vt 0.668966 0.322581
|
||||
vt 0.668966 0.612903
|
||||
vt 0.668966 0.645161
|
||||
vt 0.668966 0.403226
|
||||
vt 0.668966 0.693548
|
||||
vt 0.668966 0.725806
|
||||
vt 0.668966 0.806452
|
||||
vt 0.668966 0.887097
|
||||
vt 0.006897 0.419355
|
||||
vt 0.006897 0.016129
|
||||
vt 0.668966 0.935484
|
||||
vt 0.668966 0.129032
|
||||
vt 0.668966 0.209677
|
||||
vt 0.668966 0.532258
|
||||
vt 0.668966 0.290323
|
||||
vt 0.668966 0.370968
|
||||
vt 0.668966 0.774194
|
||||
vt 0.668966 0.854839
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 -0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn 0.9487 0.0000 0.3162
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn -0.7071 0.0000 -0.7071
|
||||
vn -0.9487 0.0000 0.3162
|
||||
vn 0.0000 0.7071 0.7071
|
||||
vn 0.0000 0.8944 -0.4472
|
||||
vn -0.5000 -0.8660 -0.0000
|
||||
vn 0.5000 0.8660 0.0000
|
||||
vn -0.6124 0.3536 0.7071
|
||||
vn -0.7746 0.4472 -0.4472
|
||||
vn 0.5000 -0.8660 0.0000
|
||||
vn -0.5000 0.8660 0.0000
|
||||
vn -0.6124 -0.3536 0.7071
|
||||
vn -0.7746 -0.4472 -0.4472
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.0000 -0.8944 -0.4472
|
||||
vn 0.6124 -0.3536 0.7071
|
||||
vn 0.7746 -0.4472 -0.4472
|
||||
vn 0.6124 0.3536 0.7071
|
||||
vn 0.7746 0.4472 -0.4472
|
||||
vn -0.7071 0.7071 0.0000
|
||||
vn 0.7071 0.7071 0.0000
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
vn -0.5000 0.5000 -0.7071
|
||||
vn -0.5000 0.5000 0.7071
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn -0.5000 -0.5000 -0.7071
|
||||
vn -0.5000 -0.5000 0.7071
|
||||
vn 0.5000 -0.5000 -0.7071
|
||||
vn 0.5000 -0.5000 0.7071
|
||||
vn 0.5000 0.5000 -0.7071
|
||||
vn 0.5000 0.5000 0.7071
|
||||
vn 0.0000 0.7571 0.6532
|
||||
vn 0.4991 0.8645 -0.0595
|
||||
vn 0.0000 0.9982 -0.0595
|
||||
vn 0.6557 0.3786 0.6532
|
||||
vn 0.8645 0.4991 -0.0595
|
||||
vn 0.9982 0.0000 -0.0595
|
||||
vn 0.7571 0.0000 0.6532
|
||||
vn 0.8645 -0.4991 -0.0595
|
||||
vn 0.6557 -0.3786 0.6532
|
||||
vn 0.4991 -0.8645 -0.0595
|
||||
vn 0.3786 -0.6557 0.6532
|
||||
vn 0.0000 -0.9982 -0.0595
|
||||
vn 0.0000 -0.7571 0.6532
|
||||
vn -0.4991 -0.8645 -0.0595
|
||||
vn -0.3786 -0.6557 0.6532
|
||||
vn -0.8645 -0.4991 -0.0595
|
||||
vn -0.6557 -0.3786 0.6532
|
||||
vn -0.9982 0.0000 -0.0595
|
||||
vn -0.7571 0.0000 0.6532
|
||||
vn -0.8645 0.4991 -0.0595
|
||||
vn -0.6557 0.3786 0.6532
|
||||
vn -0.4991 0.8645 -0.0595
|
||||
vn -0.3786 0.6557 0.6532
|
||||
vn 0.0000 -0.7169 -0.6972
|
||||
vn 0.3584 -0.6208 -0.6972
|
||||
vn 0.6208 -0.3584 -0.6972
|
||||
vn 0.7169 0.0000 -0.6972
|
||||
vn -0.3584 0.6208 -0.6972
|
||||
vn 0.3584 0.6208 -0.6972
|
||||
vn 0.0000 0.7169 -0.6972
|
||||
vn 0.6208 0.3584 -0.6972
|
||||
vn -0.6208 0.3584 -0.6972
|
||||
vn -0.7169 0.0000 -0.6972
|
||||
vn -0.6208 -0.3584 -0.6972
|
||||
vn -0.3584 -0.6208 -0.6972
|
||||
vn 0.3786 0.6557 0.6532
|
||||
usemtl None
|
||||
s off
|
||||
f 7/1/1 1/2/1 6/3/1
|
||||
f 2/4/2 7/1/2 8/5/2
|
||||
f 11/6/3 5/7/3 10/8/3
|
||||
f 4/9/4 9/10/4 3/11/4
|
||||
f 10/12/5 12/13/5 11/14/5
|
||||
f 6/3/6 8/15/6 7/1/6
|
||||
f 5/16/7 6/3/7 1/2/7
|
||||
f 13/17/1 19/18/1 18/19/1
|
||||
f 16/20/2 24/21/2 20/22/2
|
||||
f 17/23/8 23/24/8 22/25/8
|
||||
f 21/26/4 16/20/4 15/27/4
|
||||
f 24/21/9 22/28/9 23/29/9
|
||||
f 20/30/10 18/19/10 19/18/10
|
||||
f 17/31/7 22/32/7 21/33/7
|
||||
f 26/34/8 27/35/8 25/36/8
|
||||
f 28/37/4 31/38/4 27/35/4
|
||||
f 32/39/3 29/40/3 31/38/3
|
||||
f 30/41/1 25/36/1 29/42/1
|
||||
f 28/37/8 26/34/8 33/43/8
|
||||
f 30/41/11 33/44/11 26/34/11
|
||||
f 28/37/12 34/45/12 32/39/12
|
||||
f 30/46/3 32/39/3 34/47/3
|
||||
f 36/48/13 37/49/13 35/50/13
|
||||
f 37/49/4 42/51/4 41/52/4
|
||||
f 42/51/14 39/53/14 41/52/14
|
||||
f 39/54/1 36/48/1 35/50/1
|
||||
f 38/55/13 36/48/13 43/56/13
|
||||
f 40/57/15 43/58/15 36/48/15
|
||||
f 38/55/16 44/59/16 42/51/16
|
||||
f 40/60/14 42/51/14 44/61/14
|
||||
f 46/62/17 47/63/17 45/64/17
|
||||
f 47/63/4 52/65/4 51/66/4
|
||||
f 51/66/18 50/67/18 49/68/18
|
||||
f 50/69/1 45/64/1 49/70/1
|
||||
f 48/71/17 46/62/17 53/72/17
|
||||
f 50/69/19 53/73/19 46/62/19
|
||||
f 52/65/20 53/74/20 54/75/20
|
||||
f 50/67/18 52/65/18 54/76/18
|
||||
f 56/77/3 57/78/3 55/79/3
|
||||
f 58/80/4 61/81/4 57/78/4
|
||||
f 61/81/8 60/82/8 59/83/8
|
||||
f 60/84/1 55/79/1 59/85/1
|
||||
f 58/80/3 56/77/3 63/86/3
|
||||
f 56/77/21 64/87/21 63/88/21
|
||||
f 58/80/22 64/89/22 62/90/22
|
||||
f 60/82/8 62/90/8 64/91/8
|
||||
f 66/92/14 67/93/14 65/94/14
|
||||
f 68/95/4 71/96/4 67/93/4
|
||||
f 72/97/13 69/98/13 71/96/13
|
||||
f 70/99/1 65/94/1 69/100/1
|
||||
f 68/95/14 66/92/14 73/101/14
|
||||
f 66/92/23 74/102/23 73/103/23
|
||||
f 68/95/24 74/104/24 72/97/24
|
||||
f 70/105/13 72/97/13 74/106/13
|
||||
f 75/107/18 78/108/18 77/109/18
|
||||
f 78/108/4 81/110/4 77/109/4
|
||||
f 81/110/17 80/111/17 79/112/17
|
||||
f 80/113/1 75/107/1 79/114/1
|
||||
f 78/108/18 76/115/18 83/116/18
|
||||
f 76/115/25 84/117/25 83/118/25
|
||||
f 78/108/26 84/119/26 82/120/26
|
||||
f 80/111/17 82/120/17 84/121/17
|
||||
f 91/122/27 93/123/27 96/124/27
|
||||
f 93/125/28 94/126/28 87/127/28
|
||||
f 91/122/29 92/128/29 86/129/29
|
||||
f 92/128/4 88/130/4 86/129/4
|
||||
f 91/131/30 95/132/30 92/128/30
|
||||
f 90/133/31 94/126/31 93/134/31
|
||||
f 87/127/1 89/135/1 85/136/1
|
||||
f 103/137/29 105/138/29 108/139/29
|
||||
f 105/140/27 106/141/27 99/142/27
|
||||
f 103/137/32 104/143/32 98/144/32
|
||||
f 104/143/4 100/145/4 98/144/4
|
||||
f 103/146/33 107/147/33 104/143/33
|
||||
f 102/148/34 106/141/34 105/149/34
|
||||
f 106/141/1 97/150/1 99/142/1
|
||||
f 115/151/32 117/152/32 120/153/32
|
||||
f 117/154/29 118/155/29 111/156/29
|
||||
f 115/151/28 116/157/28 110/158/28
|
||||
f 110/158/4 119/159/4 112/160/4
|
||||
f 120/161/35 116/157/35 115/162/35
|
||||
f 117/163/36 113/164/36 118/155/36
|
||||
f 111/156/1 113/164/1 109/165/1
|
||||
f 132/166/28 126/167/28 129/168/28
|
||||
f 129/169/32 130/170/32 123/171/32
|
||||
f 127/172/27 128/173/27 122/174/27
|
||||
f 122/174/4 131/175/4 124/176/4
|
||||
f 132/177/37 128/173/37 127/178/37
|
||||
f 129/179/38 125/180/38 130/170/38
|
||||
f 130/170/1 121/181/1 123/171/1
|
||||
f 154/182/1 146/183/1 138/184/1
|
||||
f 166/185/4 168/186/4 160/187/4
|
||||
f 7/1/1 2/4/1 1/2/1
|
||||
f 8/5/2 11/6/2 12/13/2
|
||||
f 12/13/2 4/9/2 8/5/2
|
||||
f 4/9/2 2/4/2 8/5/2
|
||||
f 11/6/3 8/5/3 5/7/3
|
||||
f 4/9/4 12/13/4 9/10/4
|
||||
f 10/12/5 9/10/5 12/13/5
|
||||
f 6/3/6 5/188/6 8/15/6
|
||||
f 1/2/7 3/189/7 5/16/7
|
||||
f 3/189/7 9/190/7 5/16/7
|
||||
f 9/190/7 10/191/7 5/16/7
|
||||
f 13/17/1 14/192/1 19/18/1
|
||||
f 24/21/2 23/24/2 20/22/2
|
||||
f 20/22/2 19/18/2 14/192/2
|
||||
f 14/192/2 16/20/2 20/22/2
|
||||
f 17/23/8 20/22/8 23/24/8
|
||||
f 21/26/4 24/21/4 16/20/4
|
||||
f 24/21/9 21/26/9 22/28/9
|
||||
f 20/30/10 17/193/10 18/19/10
|
||||
f 21/33/7 15/194/7 17/31/7
|
||||
f 15/194/7 13/17/7 17/31/7
|
||||
f 13/17/7 18/19/7 17/31/7
|
||||
f 26/34/8 28/37/8 27/35/8
|
||||
f 28/37/4 32/39/4 31/38/4
|
||||
f 32/39/3 30/46/3 29/40/3
|
||||
f 30/41/1 26/34/1 25/36/1
|
||||
f 30/41/11 34/195/11 33/44/11
|
||||
f 28/37/12 33/196/12 34/45/12
|
||||
f 36/48/13 38/55/13 37/49/13
|
||||
f 37/49/4 38/55/4 42/51/4
|
||||
f 42/51/14 40/60/14 39/53/14
|
||||
f 39/54/1 40/57/1 36/48/1
|
||||
f 40/57/15 44/197/15 43/58/15
|
||||
f 38/55/16 43/198/16 44/59/16
|
||||
f 46/62/17 48/71/17 47/63/17
|
||||
f 47/63/4 48/71/4 52/65/4
|
||||
f 51/66/18 52/65/18 50/67/18
|
||||
f 50/69/1 46/62/1 45/64/1
|
||||
f 50/69/19 54/199/19 53/73/19
|
||||
f 52/65/20 48/71/20 53/74/20
|
||||
f 56/77/3 58/80/3 57/78/3
|
||||
f 58/80/4 62/90/4 61/81/4
|
||||
f 61/81/8 62/90/8 60/82/8
|
||||
f 60/84/1 56/77/1 55/79/1
|
||||
f 56/77/21 60/84/21 64/87/21
|
||||
f 58/80/22 63/200/22 64/89/22
|
||||
f 66/92/14 68/95/14 67/93/14
|
||||
f 68/95/4 72/97/4 71/96/4
|
||||
f 72/97/13 70/105/13 69/98/13
|
||||
f 70/99/1 66/92/1 65/94/1
|
||||
f 66/92/23 70/99/23 74/102/23
|
||||
f 68/95/24 73/201/24 74/104/24
|
||||
f 75/107/18 76/115/18 78/108/18
|
||||
f 78/108/4 82/120/4 81/110/4
|
||||
f 81/110/17 82/120/17 80/111/17
|
||||
f 80/113/1 76/115/1 75/107/1
|
||||
f 76/115/25 80/113/25 84/117/25
|
||||
f 78/108/26 83/202/26 84/119/26
|
||||
f 91/122/27 90/203/27 93/123/27
|
||||
f 87/127/28 88/130/28 96/204/28
|
||||
f 88/130/28 95/132/28 96/204/28
|
||||
f 96/204/28 93/125/28 87/127/28
|
||||
f 86/129/29 85/205/29 90/203/29
|
||||
f 85/205/29 89/206/29 90/203/29
|
||||
f 90/203/29 91/122/29 86/129/29
|
||||
f 92/128/4 95/132/4 88/130/4
|
||||
f 91/131/30 96/207/30 95/132/30
|
||||
f 90/133/31 89/135/31 94/126/31
|
||||
f 87/127/1 94/126/1 89/135/1
|
||||
f 103/137/29 102/208/29 105/138/29
|
||||
f 99/142/27 100/145/27 108/209/27
|
||||
f 100/145/27 107/147/27 108/209/27
|
||||
f 108/209/27 105/140/27 99/142/27
|
||||
f 98/144/32 97/210/32 102/208/32
|
||||
f 97/210/32 101/211/32 102/208/32
|
||||
f 102/208/32 103/137/32 98/144/32
|
||||
f 104/143/4 107/147/4 100/145/4
|
||||
f 103/146/33 108/212/33 107/147/33
|
||||
f 102/148/34 101/213/34 106/141/34
|
||||
f 106/141/1 101/213/1 97/150/1
|
||||
f 115/151/32 114/214/32 117/152/32
|
||||
f 111/156/29 112/160/29 120/215/29
|
||||
f 112/160/29 119/159/29 120/215/29
|
||||
f 120/215/29 117/154/29 111/156/29
|
||||
f 110/158/28 109/216/28 114/214/28
|
||||
f 109/216/28 113/217/28 114/214/28
|
||||
f 114/214/28 115/151/28 110/158/28
|
||||
f 110/158/4 116/157/4 119/159/4
|
||||
f 120/161/35 119/159/35 116/157/35
|
||||
f 117/163/36 114/218/36 113/164/36
|
||||
f 111/156/1 118/155/1 113/164/1
|
||||
f 132/166/28 127/172/28 126/167/28
|
||||
f 123/171/32 124/176/32 132/219/32
|
||||
f 124/176/32 131/175/32 132/219/32
|
||||
f 132/219/32 129/169/32 123/171/32
|
||||
f 122/174/27 121/220/27 126/167/27
|
||||
f 121/220/27 125/221/27 126/167/27
|
||||
f 126/167/27 127/172/27 122/174/27
|
||||
f 122/174/4 128/173/4 131/175/4
|
||||
f 132/177/37 131/175/37 128/173/37
|
||||
f 129/179/38 126/222/38 125/180/38
|
||||
f 130/170/1 125/180/1 121/181/1
|
||||
f 138/184/1 136/223/1 134/224/1
|
||||
f 134/224/1 156/225/1 154/182/1
|
||||
f 154/182/1 152/226/1 146/183/1
|
||||
f 152/226/1 150/227/1 146/183/1
|
||||
f 150/227/1 148/228/1 146/183/1
|
||||
f 146/183/1 144/229/1 142/230/1
|
||||
f 142/230/1 140/231/1 138/184/1
|
||||
f 138/184/1 134/224/1 154/182/1
|
||||
f 146/183/1 142/230/1 138/184/1
|
||||
f 168/186/4 157/232/4 158/233/4
|
||||
f 158/233/4 159/234/4 160/187/4
|
||||
f 160/187/4 161/235/4 162/236/4
|
||||
f 162/236/4 163/237/4 160/187/4
|
||||
f 163/237/4 164/238/4 160/187/4
|
||||
f 164/238/4 165/239/4 166/185/4
|
||||
f 166/185/4 167/240/4 168/186/4
|
||||
f 168/186/4 158/233/4 160/187/4
|
||||
f 164/238/4 166/185/4 160/187/4
|
||||
s 1
|
||||
f 134/241/39 135/242/40 133/243/41
|
||||
f 135/242/40 138/244/42 137/245/43
|
||||
f 138/244/42 139/246/44 137/245/43
|
||||
f 140/247/45 141/248/46 139/246/44
|
||||
f 142/249/47 143/250/48 141/248/46
|
||||
f 144/251/49 145/252/50 143/250/48
|
||||
f 146/253/51 147/254/52 145/255/50
|
||||
f 148/256/53 149/257/54 147/254/52
|
||||
f 150/258/55 151/259/56 149/257/54
|
||||
f 152/260/57 153/261/58 151/259/56
|
||||
f 154/262/59 155/263/60 153/261/58
|
||||
f 156/264/61 133/243/41 155/263/60
|
||||
f 147/254/52 163/265/62 145/255/50
|
||||
f 143/250/48 163/266/62 162/267/63
|
||||
f 143/250/48 161/268/64 141/248/46
|
||||
f 141/248/46 160/269/65 139/246/44
|
||||
f 133/243/41 168/270/66 155/263/60
|
||||
f 133/243/41 158/271/67 157/272/68
|
||||
f 139/246/44 159/273/69 137/245/43
|
||||
f 153/261/58 168/274/66 167/275/70
|
||||
f 137/245/43 158/276/67 135/242/40
|
||||
f 151/259/56 167/277/70 166/278/71
|
||||
f 151/259/56 165/279/72 149/257/54
|
||||
f 149/257/54 164/280/73 147/254/52
|
||||
f 134/241/39 136/281/74 135/242/40
|
||||
f 135/242/40 136/281/74 138/244/42
|
||||
f 138/244/42 140/247/45 139/246/44
|
||||
f 140/247/45 142/249/47 141/248/46
|
||||
f 142/249/47 144/251/49 143/250/48
|
||||
f 144/251/49 146/282/51 145/252/50
|
||||
f 146/253/51 148/256/53 147/254/52
|
||||
f 148/256/53 150/258/55 149/257/54
|
||||
f 150/258/55 152/260/57 151/259/56
|
||||
f 152/260/57 154/262/59 153/261/58
|
||||
f 154/262/59 156/264/61 155/263/60
|
||||
f 156/264/61 134/241/39 133/243/41
|
||||
f 147/254/52 164/283/73 163/265/62
|
||||
f 143/250/48 145/252/50 163/266/62
|
||||
f 143/250/48 162/284/63 161/268/64
|
||||
f 141/248/46 161/285/64 160/269/65
|
||||
f 133/243/41 157/286/68 168/270/66
|
||||
f 133/243/41 135/242/40 158/271/67
|
||||
f 139/246/44 160/287/65 159/273/69
|
||||
f 153/261/58 155/263/60 168/274/66
|
||||
f 137/245/43 159/288/69 158/276/67
|
||||
f 151/259/56 153/261/58 167/277/70
|
||||
f 151/259/56 166/289/71 165/279/72
|
||||
f 149/257/54 165/290/72 164/280/73
|
||||
1411
src/main/resources/assets/hbm/models/bombs/dud_salted.obj
Normal file
@ -177,8 +177,6 @@
|
||||
"weapon.magReloadBolt": {"category": "player", "sounds": [{"name": "weapon/magReloadBolt", "stream": false}]},
|
||||
"weapon.rpgReload": {"category": "player", "sounds": [{"name": "weapon/rpgReload", "stream": false}]},
|
||||
"weapon.boat": {"category": "player", "sounds": [{"name": "weapon/boat", "stream": false}]},
|
||||
"weapon.hkShoot": {"category": "player", "sounds": [{"name": "weapon/hkShoot", "stream": false}]},
|
||||
"weapon.hkReload": {"category": "player", "sounds": [{"name": "weapon/hkReload", "stream": false}]},
|
||||
"weapon.deagleShoot": {"category": "player", "sounds": [{"name": "weapon/deagleShoot", "stream": false}]},
|
||||
"weapon.tesla": {"category": "block", "sounds": ["weapon/tesla1", "weapon/tesla2", "weapon/tesla3", "weapon/tesla4"]},
|
||||
"weapon.teslaShoot": {"category": "player", "sounds": [{"name": "weapon/teslaShoot", "stream": false}]},
|
||||
@ -255,6 +253,7 @@
|
||||
"weapon.fire.tesla": {"category": "player", "sounds": ["weapon/fire/tesla"]},
|
||||
"weapon.fire.aberrator": {"category": "player", "sounds": ["weapon/fire/aberrator"]},
|
||||
"weapon.fire.stab": {"category": "player", "sounds": ["weapon/fire/stab1", "weapon/fire/stab2"]},
|
||||
"weapon.fire.grenade": {"category": "player", "sounds": ["weapon/fire/grenade"]},
|
||||
|
||||
"weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]},
|
||||
"weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]},
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 671 B |
|
After Width: | Height: | Size: 239 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 465 B |
|
After Width: | Height: | Size: 175 B |
|
After Width: | Height: | Size: 562 B |
|
Before Width: | Height: | Size: 525 B |
|
Before Width: | Height: | Size: 549 B |
|
Before Width: | Height: | Size: 249 B |
|
After Width: | Height: | Size: 28 KiB |
BIN
src/main/resources/assets/hbm/textures/models/bombs/dud_nuke.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 528 B After Width: | Height: | Size: 594 B |
|
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 873 B |
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 333 B |