mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge branch 'HbmMods:master' into master
This commit is contained in:
commit
abb9cbc980
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4578
|
||||
mod_build_number=4585
|
||||
|
||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\
|
||||
@ -11,4 +11,4 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al
|
||||
\ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\
|
||||
\ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (satellite loot system, project settings), Silly541 (config for safe ME drives),\
|
||||
\ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen (project settings),\
|
||||
\ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips)
|
||||
\ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips)
|
||||
|
||||
@ -11,6 +11,7 @@ import com.hbm.blocks.machine.*;
|
||||
import com.hbm.blocks.machine.pile.*;
|
||||
import com.hbm.blocks.machine.rbmk.*;
|
||||
import com.hbm.blocks.network.*;
|
||||
import com.hbm.blocks.rail.RailStandardStraight;
|
||||
import com.hbm.blocks.siege.*;
|
||||
import com.hbm.blocks.test.*;
|
||||
import com.hbm.blocks.turret.*;
|
||||
@ -1085,6 +1086,8 @@ public class ModBlocks {
|
||||
public static Block rail_highspeed;
|
||||
public static Block rail_booster;
|
||||
|
||||
public static Block rail_large_straight;
|
||||
|
||||
public static Block statue_elb;
|
||||
public static Block statue_elb_g;
|
||||
public static Block statue_elb_w;
|
||||
@ -2109,6 +2112,7 @@ public class ModBlocks {
|
||||
rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow");
|
||||
rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed");
|
||||
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
|
||||
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
|
||||
crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon");
|
||||
@ -3326,6 +3330,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName());
|
||||
register(rail_large_straight);
|
||||
|
||||
//Crate
|
||||
GameRegistry.registerBlock(crate, crate.getUnlocalizedName());
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
@ -11,6 +13,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
@ -29,6 +32,11 @@ public class Watz extends BlockDummyable {
|
||||
if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int i, Random rand, int j) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
|
||||
40
src/main/java/com/hbm/blocks/rail/IRailNTM.java
Normal file
40
src/main/java/com/hbm/blocks/rail/IRailNTM.java
Normal file
@ -0,0 +1,40 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/** in retrospect, not the best name i could have chosen */
|
||||
public interface IRailNTM {
|
||||
|
||||
/** Returns a vector pointing to the closest snapping position given the starting position */
|
||||
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ);
|
||||
|
||||
/**
|
||||
* Returns a location on the rail based on the train's current X/Y/Z momentum as well as the intended speed along the rail.
|
||||
* If the train would leave the rail within that tick, the position is the last valid position on that rail.
|
||||
* Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing.
|
||||
* The motion has to be calculated from the train's rotation, the scalar doesn't matter since it's only used for determining orientation in a clear way.
|
||||
* Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative.
|
||||
* Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail.
|
||||
* */
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info);
|
||||
|
||||
/** Returns that rail's gauge. Trains will derail if the gauge does not match. */
|
||||
public TrackGauge getGauge(World world, int x, int y, int z);
|
||||
|
||||
public static enum TrackGauge {
|
||||
STANDARD //roughly 1.5m
|
||||
}
|
||||
|
||||
/** A wrapper for all relevant info required when leaving a rail */
|
||||
public static class RailLeaveInfo {
|
||||
/** The amount of blocks still left to travel after completing the rail */
|
||||
public double overshoot;
|
||||
/** The exit position of that rail */
|
||||
public BlockPos pos;
|
||||
public RailLeaveInfo dist(double d) { this.overshoot = d; return this; }
|
||||
public RailLeaveInfo pos(BlockPos d) { this.pos = d; return this; }
|
||||
}
|
||||
}
|
||||
113
src/main/java/com/hbm/blocks/rail/RailStandardStraight.java
Normal file
113
src/main/java/com/hbm/blocks/rail/RailStandardStraight.java
Normal file
@ -0,0 +1,113 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
||||
|
||||
public RailStandardStraight() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 2, 2, 0, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailLeaveInfo());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
|
||||
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailLeaveInfo info) {
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
int cX = pos[0];
|
||||
int cY = pos[1];
|
||||
int cZ = pos[2];
|
||||
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
|
||||
if(speed == 0) {
|
||||
return vec;
|
||||
}
|
||||
|
||||
if(dir == Library.POS_X || dir == Library.NEG_X) {
|
||||
double targetX = trainX;
|
||||
if(motionX > 0) {
|
||||
targetX += speed;
|
||||
} else {
|
||||
targetX -= speed;
|
||||
}
|
||||
vec.xCoord = MathHelper.clamp_double(targetX, x - 2, x + 3);
|
||||
vec.yCoord = y;
|
||||
vec.zCoord = z + 0.5;
|
||||
info.dist(Math.abs(targetX - vec.xCoord));
|
||||
info.pos(new BlockPos(vec.xCoord + (motionX > 0 ? 1 : -1), y, z));
|
||||
} else {
|
||||
double targetZ = trainZ;
|
||||
if(motionZ > 0) {
|
||||
targetZ += speed;
|
||||
} else {
|
||||
targetZ -= speed;
|
||||
}
|
||||
vec.xCoord = x + 0.5;
|
||||
vec.yCoord = y;
|
||||
vec.zCoord = MathHelper.clamp_double(targetZ, z - 2, z + 3);
|
||||
info.dist(Math.abs(targetZ - vec.zCoord));
|
||||
info.pos(new BlockPos(x, y, vec.zCoord + (motionZ > 0 ? 1 : -1)));
|
||||
}
|
||||
|
||||
return vec;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrackGauge getGauge(World world, int x, int y, int z) {
|
||||
return TrackGauge.STANDARD;
|
||||
}
|
||||
}
|
||||
@ -14,6 +14,7 @@ import com.hbm.entity.mob.botprime.*;
|
||||
import com.hbm.entity.mob.siege.*;
|
||||
import com.hbm.entity.particle.*;
|
||||
import com.hbm.entity.projectile.*;
|
||||
import com.hbm.entity.train.TrainCargoTram;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.Tuple.Quartet;
|
||||
|
||||
@ -205,6 +206,8 @@ public class EntityMappings {
|
||||
addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000);
|
||||
addEntity(EntityMist.class, "entity_mist", 1000);
|
||||
|
||||
addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false);
|
||||
|
||||
addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00);
|
||||
addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd);
|
||||
addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B);
|
||||
|
||||
173
src/main/java/com/hbm/entity/train/EntityRailCarBase.java
Normal file
173
src/main/java/com/hbm/entity/train/EntityRailCarBase.java
Normal file
@ -0,0 +1,173 @@
|
||||
package com.hbm.entity.train;
|
||||
|
||||
import com.hbm.blocks.rail.IRailNTM;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailLeaveInfo;
|
||||
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class EntityRailCarBase extends Entity {
|
||||
|
||||
public boolean isOnRail = true;
|
||||
private int turnProgress;
|
||||
private double trainX;
|
||||
private double trainY;
|
||||
private double trainZ;
|
||||
private double trainYaw;
|
||||
private double trainPitch;
|
||||
@SideOnly(Side.CLIENT) private double velocityX;
|
||||
@SideOnly(Side.CLIENT) private double velocityY;
|
||||
@SideOnly(Side.CLIENT) private double velocityZ;
|
||||
|
||||
public EntityRailCarBase(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
@Override protected void entityInit() { }
|
||||
@Override protected void readEntityFromNBT(NBTTagCompound nbt) { }
|
||||
@Override protected void writeEntityToNBT(NBTTagCompound nbt) { }
|
||||
|
||||
@Override
|
||||
public boolean canBePushed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeCollidedWith() {
|
||||
return !this.isDead;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
|
||||
if(this.worldObj.isRemote) {
|
||||
if(this.turnProgress > 0) {
|
||||
double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress;
|
||||
double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress;
|
||||
double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress;
|
||||
double yaw = MathHelper.wrapAngleTo180_double(this.trainYaw - (double) this.rotationYaw);
|
||||
this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.turnProgress);
|
||||
this.rotationPitch = (float) ((double) this.rotationPitch + (this.trainPitch - (double) this.rotationPitch) / (double) this.turnProgress);
|
||||
--this.turnProgress;
|
||||
this.setPosition(x, y, z);
|
||||
this.setRotation(this.rotationYaw, this.rotationPitch);
|
||||
} else {
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
this.setRotation(this.rotationYaw, this.rotationPitch);
|
||||
}
|
||||
} else {
|
||||
|
||||
BlockPos anchor = this.getCurentAnchorPos();
|
||||
Vec3 corePos = getRelPosAlongRail(anchor, this.getCurrentSpeed());
|
||||
|
||||
if(corePos == null) {
|
||||
this.derail();
|
||||
} else {
|
||||
this.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
|
||||
anchor = this.getCurentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan());
|
||||
Vec3 backPos = getRelPosAlongRail(anchor, this.getLengthSpan());
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
this.derail();
|
||||
} else {
|
||||
this.rotationYaw = generateYaw(frontPos, backPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover) {
|
||||
|
||||
double overshoot = 0;
|
||||
float yaw = this.rotationYaw;
|
||||
|
||||
Vec3 next = Vec3.createVectorHelper(posX, posY, posZ);
|
||||
|
||||
do {
|
||||
|
||||
int x = anchor.getX();
|
||||
int y = anchor.getY();
|
||||
int z = anchor.getZ();
|
||||
Block block = worldObj.getBlock(x, y, z);
|
||||
|
||||
Vec3 rot = Vec3.createVectorHelper(0, 0, 1);
|
||||
rot.rotateAroundY(yaw);
|
||||
|
||||
if(block instanceof IRailNTM) {
|
||||
IRailNTM rail = (IRailNTM) block;
|
||||
|
||||
if(rail.getGauge(worldObj, x, y, z) == this.getGauge()) {
|
||||
RailLeaveInfo info = new RailLeaveInfo();
|
||||
Vec3 prev = next;
|
||||
next = rail.getTravelLocation(worldObj, x, y, z, posX, posY, posZ, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info);
|
||||
overshoot = info.overshoot;
|
||||
anchor = info.pos;
|
||||
yaw = generateYaw(next, prev);
|
||||
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
} while(overshoot != 0); //if there's still length to cover, keep going
|
||||
|
||||
return next;
|
||||
}
|
||||
|
||||
public float generateYaw(Vec3 front, Vec3 back) {
|
||||
double deltaX = front.xCoord - back.xCoord;
|
||||
double deltaZ = front.zCoord - back.zCoord;
|
||||
double radians = Math.atan(deltaZ / deltaX);
|
||||
return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90);
|
||||
}
|
||||
|
||||
/** Returns the amount of blocks that the train should move per tick */
|
||||
public abstract double getCurrentSpeed();
|
||||
/** Returns the gauge of this train */
|
||||
public abstract TrackGauge getGauge();
|
||||
/** Returns the length between the core and one of the bogies */
|
||||
public abstract double getLengthSpan();
|
||||
|
||||
/** Returns the "true" position of the train, i.e. the block it wants to snap to */
|
||||
public BlockPos getCurentAnchorPos() {
|
||||
return new BlockPos(posX, posY, posZ);
|
||||
}
|
||||
|
||||
public void derail() {
|
||||
isOnRail = false;
|
||||
this.setDead();
|
||||
worldObj.createExplosion(this, posX, posY, posZ, 1F, false);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) {
|
||||
this.trainX = posX;
|
||||
this.trainY = posY;
|
||||
this.trainZ = posZ;
|
||||
this.trainYaw = (double) yaw;
|
||||
this.trainPitch = (double) pitch;
|
||||
this.turnProgress = turnProg + 2;
|
||||
this.motionX = this.velocityX;
|
||||
this.motionY = this.velocityY;
|
||||
this.motionZ = this.velocityZ;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void setVelocity(double mX, double mY, double mZ) {
|
||||
this.velocityX = this.motionX = mX;
|
||||
this.velocityY = this.motionY = mY;
|
||||
this.velocityZ = this.motionZ = mZ;
|
||||
}
|
||||
}
|
||||
43
src/main/java/com/hbm/entity/train/EntityRailCarRidable.java
Normal file
43
src/main/java/com/hbm/entity/train/EntityRailCarRidable.java
Normal file
@ -0,0 +1,43 @@
|
||||
package com.hbm.entity.train;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class EntityRailCarRidable extends EntityRailCarBase {
|
||||
|
||||
public EntityRailCarRidable(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean interactFirst(EntityPlayer player) {
|
||||
if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityPlayer && this.riddenByEntity != player) {
|
||||
return true;
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) {
|
||||
player.mountEntity(this);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
super.onUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRiderPosition() {
|
||||
|
||||
Vec3 offset = getRiderSeatPosition();
|
||||
offset.rotateAroundY(this.rotationYaw);
|
||||
|
||||
if(this.riddenByEntity != null) {
|
||||
this.riddenByEntity.setPosition(this.posX + offset.xCoord, this.posY + offset.yCoord, this.posZ + offset.zCoord);
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns a Vec3 showing the relative position from the driver to the core */
|
||||
public abstract Vec3 getRiderSeatPosition();
|
||||
}
|
||||
58
src/main/java/com/hbm/entity/train/TrainCargoTram.java
Normal file
58
src/main/java/com/hbm/entity/train/TrainCargoTram.java
Normal file
@ -0,0 +1,58 @@
|
||||
package com.hbm.entity.train;
|
||||
|
||||
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TrainCargoTram extends EntityRailCarRidable {
|
||||
|
||||
/*
|
||||
*
|
||||
* _________
|
||||
* | | \ <--
|
||||
* | | |___
|
||||
* | | | | |
|
||||
* _O\|_|_______|__|_____________________________|/O_
|
||||
* |____| |____|
|
||||
* \__________________________________________/
|
||||
* '( + )' '( + )'
|
||||
*
|
||||
*/
|
||||
|
||||
public TrainCargoTram(World world) {
|
||||
super(world);
|
||||
this.setSize(2F, 1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getCurrentSpeed() {
|
||||
return this.riddenByEntity instanceof EntityPlayer ? ((EntityPlayer) this.riddenByEntity).moveForward * 0.125D : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrackGauge getGauge() {
|
||||
return TrackGauge.STANDARD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getLengthSpan() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getRiderSeatPosition() {
|
||||
return Vec3.createVectorHelper(0.75, 1.75, 0.75);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) {
|
||||
if(!this.worldObj.isRemote && !this.isDead) {
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -5460,11 +5460,11 @@ public class ModItems {
|
||||
mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel");
|
||||
memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim");
|
||||
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid), new ItemStack(Items.bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic), new ItemStack(Items.bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket));
|
||||
FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid), new ItemStack(Items.bucket));
|
||||
BucketHandler.INSTANCE.buckets.put(ModBlocks.mud_block, ModItems.bucket_mud);
|
||||
BucketHandler.INSTANCE.buckets.put(ModBlocks.acid_block, ModItems.bucket_acid);
|
||||
BucketHandler.INSTANCE.buckets.put(ModBlocks.toxic_block, ModItems.bucket_toxic);
|
||||
|
||||
@ -32,7 +32,7 @@ public class ItemGunGauss extends ItemGunBase {
|
||||
|
||||
if(!main && getStored(stack) > 0) {
|
||||
EntityBulletBase bullet = new EntityBulletBase(world, altConfig.config.get(0), player);
|
||||
bullet.overrideDamage = Math.min(getStored(stack), 1) * 10F;
|
||||
bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F;
|
||||
world.spawnEntityInWorld(bullet);
|
||||
world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 0.5F, 0.75F);
|
||||
setItemWear(stack, getItemWear(stack) + (getCharge(stack)) * 2);
|
||||
|
||||
@ -60,6 +60,7 @@ import com.hbm.entity.mob.botprime.*;
|
||||
import com.hbm.entity.mob.siege.*;
|
||||
import com.hbm.entity.particle.*;
|
||||
import com.hbm.entity.projectile.*;
|
||||
import com.hbm.entity.train.*;
|
||||
import com.hbm.handler.CasingEjector;
|
||||
import com.hbm.handler.HbmKeybinds;
|
||||
import com.hbm.handler.ImpactWorldHandler;
|
||||
@ -681,6 +682,7 @@ public class ClientProxy extends ServerProxy {
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus());
|
||||
RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram());
|
||||
//items
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage());
|
||||
|
||||
@ -127,6 +127,7 @@ import net.minecraftforge.client.event.RenderWorldLastEvent;
|
||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||
import net.minecraftforge.client.event.sound.PlaySoundEvent17;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
|
||||
|
||||
public class ModEventHandlerClient {
|
||||
@ -200,6 +201,19 @@ public class ModEventHandlerClient {
|
||||
GL11.glPopMatrix();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
|
||||
}*/
|
||||
|
||||
List<String> text = new ArrayList();
|
||||
text.add("YAW: " + player.rotationYaw);
|
||||
text.add("PITCH: " + player.rotationPitch);
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
int j = 0;
|
||||
if(i == 0) j = 2;
|
||||
if(i == 1) j = 5;
|
||||
if(i == 2) j = 3;
|
||||
if(i == 3) j = 4;
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(j).getOpposite();
|
||||
text.add("x: " + dir.offsetX + " z: " + dir.offsetZ);
|
||||
ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text);
|
||||
}
|
||||
|
||||
/// HANLDE ANIMATION BUSES ///
|
||||
|
||||
@ -1005,6 +1005,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj"));
|
||||
public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj"));
|
||||
public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj"));
|
||||
public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj"));
|
||||
|
||||
////Texture Entities
|
||||
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package com.hbm.render.entity.item;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class RenderTrainCargoTram extends Render {
|
||||
|
||||
@Override
|
||||
public void doRender(Entity entity, double x, double y, double z, float swing, float interp) {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x, y, z);
|
||||
|
||||
GL11.glRotated(180 - entity.rotationYaw, 0, 1, 0);
|
||||
GL11.glRotated(-entity.rotationPitch, 0, 0, 1);
|
||||
|
||||
MainRegistry.proxy.displayTooltip("Yaw: " + entity.rotationYaw, 666);
|
||||
MainRegistry.proxy.displayTooltip("Pitch: " + entity.rotationPitch, 667);
|
||||
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
bindTexture(ResourceManager.universal);
|
||||
ResourceManager.train_cargo_tram.renderAll();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity entity) {
|
||||
return ResourceManager.universal;
|
||||
}
|
||||
}
|
||||
425
src/main/resources/assets/hbm/models/vehicles/tram.obj
Normal file
425
src/main/resources/assets/hbm/models/vehicles/tram.obj
Normal file
@ -0,0 +1,425 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'tram.blend'
|
||||
# www.blender.org
|
||||
o Plane
|
||||
v -1.000000 0.500000 2.500000
|
||||
v 1.000000 0.500000 2.500000
|
||||
v -1.000000 0.500000 -2.500000
|
||||
v 1.000000 0.500000 -2.500000
|
||||
v -1.000000 0.250000 2.500000
|
||||
v 1.000000 0.250000 2.500000
|
||||
v -1.000000 0.250000 -2.500000
|
||||
v 1.000000 0.250000 -2.500000
|
||||
v -1.000000 0.000000 2.250000
|
||||
v 1.000000 0.000000 2.250000
|
||||
v -1.000000 0.000000 -2.250000
|
||||
v 1.000000 0.000000 -2.250000
|
||||
v -0.125000 0.500000 1.000000
|
||||
v 0.875000 0.500000 1.000000
|
||||
v -0.125000 1.500000 1.000000
|
||||
v 0.875000 1.500000 1.000000
|
||||
v 0.125000 0.500000 2.000000
|
||||
v -0.125000 0.500000 1.750000
|
||||
v 0.875000 0.500000 1.750000
|
||||
v 0.625000 0.500000 2.000000
|
||||
v -0.125000 1.500000 1.750000
|
||||
v 0.125000 1.500000 2.000000
|
||||
v 0.625000 1.500000 2.000000
|
||||
v 0.875000 1.500000 1.750000
|
||||
v -0.625000 0.750000 2.437500
|
||||
v -0.625000 0.750000 2.312500
|
||||
v 0.625000 0.750000 2.312500
|
||||
v 0.625000 0.750000 2.437500
|
||||
v 0.713388 0.713388 2.312500
|
||||
v 0.713388 0.713388 2.437500
|
||||
v 0.750000 0.625000 2.312500
|
||||
v 0.750000 0.625000 2.437500
|
||||
v 0.713388 0.536612 2.312500
|
||||
v 0.713388 0.536612 2.437500
|
||||
v 0.625000 0.500000 2.312500
|
||||
v 0.625000 0.500000 2.437500
|
||||
v 0.536612 0.536612 2.312500
|
||||
v 0.536612 0.536612 2.437500
|
||||
v 0.500000 0.625000 2.312500
|
||||
v 0.500000 0.625000 2.437500
|
||||
v 0.536612 0.713388 2.312500
|
||||
v 0.536612 0.713388 2.437500
|
||||
v -0.536612 0.713388 2.312500
|
||||
v -0.536612 0.713388 2.437500
|
||||
v -0.500000 0.625000 2.312500
|
||||
v -0.500000 0.625000 2.437500
|
||||
v -0.536612 0.536612 2.312500
|
||||
v -0.536612 0.536612 2.437500
|
||||
v -0.625000 0.500000 2.312500
|
||||
v -0.625000 0.500000 2.437500
|
||||
v -0.713388 0.536612 2.312500
|
||||
v -0.713388 0.536612 2.437500
|
||||
v -0.750000 0.625000 2.312500
|
||||
v -0.750000 0.625000 2.437500
|
||||
v -0.713388 0.713388 2.312500
|
||||
v -0.713388 0.713388 2.437500
|
||||
v 0.375000 0.500000 2.312500
|
||||
v 0.875000 0.500000 2.312500
|
||||
v 0.375000 0.500000 2.187500
|
||||
v 0.875000 0.500000 2.187500
|
||||
v 0.375000 0.750000 2.187500
|
||||
v 0.375000 0.750000 2.312500
|
||||
v 0.875000 0.750000 2.312500
|
||||
v 0.875000 0.750000 2.187500
|
||||
v -0.875000 0.500000 2.312500
|
||||
v -0.375000 0.500000 2.312500
|
||||
v -0.875000 0.500000 2.187500
|
||||
v -0.375000 0.500000 2.187500
|
||||
v -0.875000 0.750000 2.187500
|
||||
v -0.875000 0.750000 2.312500
|
||||
v -0.375000 0.750000 2.312500
|
||||
v -0.375000 0.750000 2.187500
|
||||
v -0.875000 0.500000 1.875000
|
||||
v -0.125000 0.500000 1.875000
|
||||
v -0.875000 0.500000 1.125000
|
||||
v -0.125000 0.500000 1.125000
|
||||
v -0.875000 1.000000 1.125000
|
||||
v -0.875000 1.000000 1.875000
|
||||
v -0.125000 1.000000 1.875000
|
||||
v -0.125000 1.000000 1.125000
|
||||
v -0.750000 0.500000 -2.250000
|
||||
v 0.750000 0.500000 -2.250000
|
||||
v -0.750000 0.500000 -1.750000
|
||||
v 0.750000 0.500000 -1.750000
|
||||
v -0.750000 1.000000 -2.250000
|
||||
v 0.750000 1.000000 -2.250000
|
||||
v -0.750000 1.000000 -1.750000
|
||||
v 0.750000 1.000000 -1.750000
|
||||
vt 0.000000 0.833333
|
||||
vt 0.320000 0.000000
|
||||
vt 0.320000 0.833333
|
||||
vt 0.840000 0.333333
|
||||
vt 0.800000 0.000000
|
||||
vt 0.840000 0.000000
|
||||
vt 0.720000 0.833333
|
||||
vt 0.720000 0.000000
|
||||
vt 0.800000 0.041667
|
||||
vt 0.880000 0.333333
|
||||
vt 0.880000 0.000000
|
||||
vt 0.920000 0.333333
|
||||
vt 0.880000 0.000000
|
||||
vt 0.920000 0.000000
|
||||
vt 0.320000 0.000000
|
||||
vt 0.640000 0.750000
|
||||
vt 0.320000 0.750000
|
||||
vt 0.320000 0.791666
|
||||
vt 0.640000 0.791667
|
||||
vt 0.640000 0.833333
|
||||
vt 0.640000 0.000000
|
||||
vt 0.720000 0.041667
|
||||
vt 0.800000 0.875000
|
||||
vt 0.880000 0.708333
|
||||
vt 0.880000 0.875000
|
||||
vt 0.640000 0.958333
|
||||
vt 0.480000 0.833333
|
||||
vt 0.640000 0.833333
|
||||
vt 0.280000 1.000000
|
||||
vt 0.160000 1.000000
|
||||
vt 0.160000 0.833333
|
||||
vt 0.160000 0.833333
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.833333
|
||||
vt 0.640000 0.791667
|
||||
vt 0.480000 0.916667
|
||||
vt 0.320000 0.958333
|
||||
vt 0.320000 0.916667
|
||||
vt 0.320000 0.791667
|
||||
vt 0.480000 0.791667
|
||||
vt 0.760000 0.833333
|
||||
vt 0.800000 0.916666
|
||||
vt 0.760000 0.916667
|
||||
vt 0.906131 0.580162
|
||||
vt 0.880000 0.568887
|
||||
vt 0.890824 0.541667
|
||||
vt 0.400000 0.973065
|
||||
vt 0.420000 0.958333
|
||||
vt 0.420000 0.973065
|
||||
vt 0.320000 1.000000
|
||||
vt 0.340000 0.958333
|
||||
vt 0.340000 1.000000
|
||||
vt 0.460000 0.987796
|
||||
vt 0.480000 0.973065
|
||||
vt 0.480000 0.987796
|
||||
vt 0.360000 0.958333
|
||||
vt 0.340000 0.973065
|
||||
vt 0.340000 0.958333
|
||||
vt 0.760000 0.996828
|
||||
vt 0.780000 0.955161
|
||||
vt 0.780000 0.996828
|
||||
vt 0.380000 0.973065
|
||||
vt 0.400000 0.958333
|
||||
vt 0.400000 0.973065
|
||||
vt 0.360000 0.973065
|
||||
vt 0.340000 0.987796
|
||||
vt 0.780000 0.996828
|
||||
vt 0.800000 0.955161
|
||||
vt 0.800000 0.996828
|
||||
vt 0.380000 0.987796
|
||||
vt 0.400000 0.987796
|
||||
vt 0.380000 0.987796
|
||||
vt 0.360000 0.973065
|
||||
vt 0.380000 0.973065
|
||||
vt 0.940000 0.583333
|
||||
vt 0.960000 0.666667
|
||||
vt 0.940000 0.666667
|
||||
vt 0.440000 0.973065
|
||||
vt 0.460000 0.958333
|
||||
vt 0.460000 0.973065
|
||||
vt 0.380000 0.958333
|
||||
vt 0.420000 0.987796
|
||||
vt 0.440000 0.973065
|
||||
vt 0.440000 0.987796
|
||||
vt 0.440000 0.987796
|
||||
vt 0.460000 0.987796
|
||||
vt 0.916955 0.571129
|
||||
vt 0.936955 0.556398
|
||||
vt 0.936955 0.571129
|
||||
vt 0.770824 0.916666
|
||||
vt 0.796955 0.927941
|
||||
vt 0.786131 0.955161
|
||||
vt 0.420000 0.973065
|
||||
vt 0.440000 0.958333
|
||||
vt 0.916955 0.556398
|
||||
vt 0.936955 0.541667
|
||||
vt 0.920000 0.250000
|
||||
vt 0.960000 0.333333
|
||||
vt 0.920000 0.333333
|
||||
vt 0.460000 0.973065
|
||||
vt 0.480000 0.958333
|
||||
vt 0.400000 0.987796
|
||||
vt 0.420000 0.987796
|
||||
vt 0.920000 0.083333
|
||||
vt 0.960000 0.166667
|
||||
vt 0.920000 0.166667
|
||||
vt 0.940000 0.666667
|
||||
vt 0.920000 0.708333
|
||||
vt 0.920000 0.666667
|
||||
vt 0.920000 0.583333
|
||||
vt 0.940000 0.666667
|
||||
vt 0.920000 0.666667
|
||||
vt 0.960000 0.250000
|
||||
vt 0.920000 0.166667
|
||||
vt 0.960000 0.166667
|
||||
vt 0.800000 0.708333
|
||||
vt 0.920000 0.583333
|
||||
vt 0.920000 0.708333
|
||||
vt 0.640000 0.958333
|
||||
vt 0.760000 0.833333
|
||||
vt 0.760000 0.958333
|
||||
vt 0.960000 0.458333
|
||||
vt 0.880000 0.333333
|
||||
vt 0.960000 0.333333
|
||||
vt 0.960000 0.958333
|
||||
vt 0.880000 0.833333
|
||||
vt 0.960000 0.833333
|
||||
vt 0.880000 1.000000
|
||||
vt 0.800000 0.875000
|
||||
vt 0.880000 0.875000
|
||||
vt 0.880000 0.708333
|
||||
vt 0.960000 0.833333
|
||||
vt 0.880000 0.833333
|
||||
vt 1.000000 0.083333
|
||||
vt 0.920000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.880000 0.541667
|
||||
vt 0.960000 0.458333
|
||||
vt 0.960000 0.541667
|
||||
vt 0.800000 0.583333
|
||||
vt 0.880000 0.333333
|
||||
vt 0.880000 0.583333
|
||||
vt 0.000000 0.000000
|
||||
vt 0.800000 0.333333
|
||||
vt 0.760000 0.000000
|
||||
vt 0.800000 0.791666
|
||||
vt 0.760000 0.833333
|
||||
vt 0.880000 0.333333
|
||||
vt 0.640000 0.000000
|
||||
vt 0.680000 0.000000
|
||||
vt 0.720000 0.791667
|
||||
vt 0.680000 0.833333
|
||||
vt 0.800000 0.708333
|
||||
vt 0.480000 0.958333
|
||||
vt 0.280000 0.833333
|
||||
vt 0.320000 0.875000
|
||||
vt 0.320000 0.958333
|
||||
vt 0.160000 1.000000
|
||||
vt 0.480000 0.791667
|
||||
vt 0.480000 0.958333
|
||||
vt 0.800000 0.833333
|
||||
vt 0.916955 0.552942
|
||||
vt 0.916955 0.568887
|
||||
vt 0.890824 0.580162
|
||||
vt 0.880000 0.552942
|
||||
vt 0.906131 0.541667
|
||||
vt 0.400000 0.958333
|
||||
vt 0.320000 0.958333
|
||||
vt 0.760000 0.955161
|
||||
vt 0.380000 0.958333
|
||||
vt 0.360000 0.987796
|
||||
vt 0.780000 0.955161
|
||||
vt 0.960000 0.583333
|
||||
vt 0.440000 0.958333
|
||||
vt 0.360000 0.958333
|
||||
vt 0.760000 0.943886
|
||||
vt 0.760000 0.927941
|
||||
vt 0.786131 0.916666
|
||||
vt 0.796955 0.943886
|
||||
vt 0.770824 0.955161
|
||||
vt 0.420000 0.958333
|
||||
vt 0.916955 0.541667
|
||||
vt 0.960000 0.250000
|
||||
vt 0.460000 0.958333
|
||||
vt 0.960000 0.083333
|
||||
vt 0.940000 0.708333
|
||||
vt 0.940000 0.583333
|
||||
vt 0.920000 0.250000
|
||||
vt 0.800000 0.583333
|
||||
vt 0.640000 0.833333
|
||||
vt 0.880000 0.458333
|
||||
vt 0.880000 0.958333
|
||||
vt 0.800000 1.000000
|
||||
vt 0.960000 0.708333
|
||||
vt 0.920000 0.083333
|
||||
vt 0.880000 0.458333
|
||||
vt 0.800000 0.333333
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn -0.7071 0.0000 0.7071
|
||||
vn 0.3827 0.9239 0.0000
|
||||
vn -0.9239 -0.3827 0.0000
|
||||
vn 0.9239 0.3827 0.0000
|
||||
vn -0.3827 -0.9239 0.0000
|
||||
vn 0.9239 -0.3827 0.0000
|
||||
vn 0.3827 -0.9239 0.0000
|
||||
vn -0.3827 0.9239 0.0000
|
||||
vn -0.9239 0.3827 0.0000
|
||||
s off
|
||||
f 2/1/1 3/2/1 1/3/1
|
||||
f 8/4/2 11/5/2 7/6/2
|
||||
f 4/7/3 2/8/3 10/9/3
|
||||
f 4/10/4 7/6/4 3/11/4
|
||||
f 1/12/5 6/13/5 2/14/5
|
||||
f 11/15/6 10/16/6 9/17/6
|
||||
f 5/18/7 10/16/7 6/19/7
|
||||
f 1/20/8 3/21/8 11/22/8
|
||||
f 20/23/5 22/24/5 17/25/5
|
||||
f 14/26/3 24/27/3 19/28/3
|
||||
f 24/29/1 16/30/1 15/31/1
|
||||
f 13/32/4 16/33/4 14/34/4
|
||||
f 24/27/9 20/35/9 19/28/9
|
||||
f 18/36/10 22/37/10 21/38/10
|
||||
f 18/36/8 15/39/8 13/40/8
|
||||
f 58/41/5 62/42/5 57/43/5
|
||||
f 25/44/5 54/45/5 50/46/5
|
||||
f 28/47/11 29/48/11 27/49/11
|
||||
f 65/50/8 69/51/8 67/52/8
|
||||
f 52/53/12 53/54/12 51/55/12
|
||||
f 30/56/13 31/57/13 29/58/13
|
||||
f 57/59/8 61/60/8 59/61/8
|
||||
f 50/62/14 51/63/14 49/64/14
|
||||
f 32/65/15 33/66/15 31/57/15
|
||||
f 60/67/3 63/68/3 58/69/3
|
||||
f 48/70/16 49/64/16 47/71/16
|
||||
f 33/72/16 36/73/16 35/74/16
|
||||
f 63/75/1 61/76/1 62/77/1
|
||||
f 46/78/15 47/79/15 45/80/15
|
||||
f 36/73/14 37/81/14 35/74/14
|
||||
f 56/82/17 26/83/17 55/84/17
|
||||
f 44/85/13 45/80/13 43/86/13
|
||||
f 38/87/12 39/88/12 37/89/12
|
||||
f 28/90/5 40/91/5 36/92/5
|
||||
f 25/93/11 43/94/11 26/83/11
|
||||
f 40/95/18 41/96/18 39/88/18
|
||||
f 59/97/4 64/98/4 60/99/4
|
||||
f 54/100/18 55/101/18 53/54/18
|
||||
f 42/102/17 27/49/17 41/103/17
|
||||
f 66/104/5 70/105/5 65/106/5
|
||||
f 68/107/3 71/108/3 66/109/3
|
||||
f 71/110/1 69/111/1 70/112/1
|
||||
f 67/113/4 72/114/4 68/115/4
|
||||
f 75/116/6 74/117/6 73/118/6
|
||||
f 79/119/1 77/120/1 78/121/1
|
||||
f 76/122/3 79/123/3 74/124/3
|
||||
f 73/125/8 77/126/8 75/127/8
|
||||
f 75/128/4 80/129/4 76/130/4
|
||||
f 74/131/5 78/132/5 73/133/5
|
||||
f 86/134/3 84/135/3 82/136/3
|
||||
f 87/137/8 81/138/8 83/139/8
|
||||
f 85/140/4 82/141/4 81/142/4
|
||||
f 2/1/1 4/143/1 3/2/1
|
||||
f 8/4/2 12/144/2 11/5/2
|
||||
f 2/8/3 6/145/3 10/9/3
|
||||
f 10/9/3 12/146/3 4/7/3
|
||||
f 12/146/3 8/147/3 4/7/3
|
||||
f 4/10/4 8/4/4 7/6/4
|
||||
f 1/12/5 5/148/5 6/13/5
|
||||
f 11/15/6 12/149/6 10/16/6
|
||||
f 5/18/7 9/17/7 10/16/7
|
||||
f 3/21/8 7/150/8 11/22/8
|
||||
f 11/22/8 9/151/8 1/20/8
|
||||
f 9/151/8 5/152/8 1/20/8
|
||||
f 20/23/5 23/153/5 22/24/5
|
||||
f 14/26/3 16/154/3 24/27/3
|
||||
f 15/31/1 21/155/1 24/29/1
|
||||
f 21/155/1 22/156/1 24/29/1
|
||||
f 22/156/1 23/157/1 24/29/1
|
||||
f 13/32/4 15/158/4 16/33/4
|
||||
f 24/27/9 23/159/9 20/35/9
|
||||
f 18/36/10 17/160/10 22/37/10
|
||||
f 18/36/8 21/38/8 15/39/8
|
||||
f 58/41/5 63/161/5 62/42/5
|
||||
f 46/162/5 44/163/5 25/44/5
|
||||
f 25/44/5 56/164/5 54/45/5
|
||||
f 54/45/5 52/165/5 50/46/5
|
||||
f 50/46/5 48/166/5 46/162/5
|
||||
f 46/162/5 25/44/5 50/46/5
|
||||
f 28/47/11 30/167/11 29/48/11
|
||||
f 65/50/8 70/168/8 69/51/8
|
||||
f 52/53/12 54/100/12 53/54/12
|
||||
f 30/56/13 32/65/13 31/57/13
|
||||
f 57/59/8 62/169/8 61/60/8
|
||||
f 50/62/14 52/170/14 51/63/14
|
||||
f 32/65/15 34/171/15 33/66/15
|
||||
f 60/67/3 64/172/3 63/68/3
|
||||
f 48/70/16 50/62/16 49/64/16
|
||||
f 33/72/16 34/171/16 36/73/16
|
||||
f 63/75/1 64/173/1 61/76/1
|
||||
f 46/78/15 48/174/15 47/79/15
|
||||
f 36/73/14 38/175/14 37/81/14
|
||||
f 56/82/17 25/93/17 26/83/17
|
||||
f 44/85/13 46/78/13 45/80/13
|
||||
f 38/87/12 40/95/12 39/88/12
|
||||
f 32/176/5 30/177/5 28/90/5
|
||||
f 28/90/5 42/178/5 40/91/5
|
||||
f 40/91/5 38/179/5 36/92/5
|
||||
f 36/92/5 34/180/5 32/176/5
|
||||
f 32/176/5 28/90/5 36/92/5
|
||||
f 25/93/11 44/181/11 43/94/11
|
||||
f 40/95/18 42/182/18 41/96/18
|
||||
f 59/97/4 61/183/4 64/98/4
|
||||
f 54/100/18 56/184/18 55/101/18
|
||||
f 42/102/17 28/47/17 27/49/17
|
||||
f 66/104/5 71/185/5 70/105/5
|
||||
f 68/107/3 72/186/3 71/108/3
|
||||
f 71/110/1 72/187/1 69/111/1
|
||||
f 67/113/4 69/188/4 72/114/4
|
||||
f 75/116/6 76/189/6 74/117/6
|
||||
f 79/119/1 80/190/1 77/120/1
|
||||
f 76/122/3 80/191/3 79/123/3
|
||||
f 73/125/8 78/192/8 77/126/8
|
||||
f 75/128/4 77/193/4 80/129/4
|
||||
f 74/131/5 79/194/5 78/132/5
|
||||
f 86/134/3 88/195/3 84/135/3
|
||||
f 87/137/8 85/196/8 81/138/8
|
||||
f 85/140/4 86/197/4 82/141/4
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 313 B |
Loading…
x
Reference in New Issue
Block a user