Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package itsamysterious.mods.reallifemod.core.vehicles;
- import org.lwjgl.input.Keyboard;
- import org.lwjgl.util.vector.Vector3f;
- import io.netty.buffer.ByteBuf;
- import itsamysterious.mods.reallifemod.RealLifeMod;
- import itsamysterious.mods.reallifemod.core.packets.MountVehicleMessage;
- import itsamysterious.mods.reallifemod.core.sounds.SoundPlayer;
- import net.minecraft.block.Block;
- import net.minecraft.client.Minecraft;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.IEntityMultiPart;
- import net.minecraft.entity.boss.EntityDragonPart;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.util.AxisAlignedBB;
- import net.minecraft.util.BlockPos;
- import net.minecraft.util.DamageSource;
- import net.minecraft.world.World;
- import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- public class EntityVehicle extends Entity implements IEntityAdditionalSpawnData{
- private static final double g = 9.81;
- private VehicleFile file;
- public double backWheelRotation;
- public double wheelRotL;
- public double steeringangle;
- private boolean isEmpty;
- private boolean canDoStuff;
- private EntitySeat[] seats;
- private double vehicleX;
- private double vehicleY;
- private double vehicleZ;
- private float vehicleYaw;
- private float vehiclePitch;
- private double velocityY;
- private double velocityX;
- private double velocityZ;
- public double speed;
- public double fuellevel;
- private SoundPlayer player;
- //Constants
- private float P;//Power Lever
- private float Xb; // Brake pedal deflection
- private float Xn; // Brake pedal deflection
- private double F;//Propulsive fort
- private double V;//Propulsive fort
- private VehicleRadio radio;
- public EntityVehicle(World world) {
- super(world);
- this.setSize(1, 2);
- this.canDoStuff = false;
- this.isEmpty = true;
- this.preventEntitySpawning = true;
- }
- public EntityVehicle(World world, VehicleFile file, double x, double y, double z) {
- this(world);
- this.setFile(file);
- this.seats = new EntitySeat[file.numDrivers];
- //this.createSeats(world);
- this.setPosition(x, y, z);
- this.canDoStuff = true;
- }
- private void createSeats(World w) {
- for (int i = 0; i < this.seats.length; i++) {
- System.out.println(seats.length);
- this.seats[i] = new EntitySeat(w);
- w.spawnEntityInWorld(seats[i]);
- }
- this.canDoStuff = true;
- }
- @Override
- @SideOnly(Side.CLIENT)
- public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) {
- this.velocityX = (float) (this.motionX = p_70016_1_);
- this.velocityY = (float) (this.motionY = p_70016_3_);
- this.velocityZ = (float) (this.motionZ = p_70016_5_);
- }
- @Override
- public void entityInit() {
- this.dataWatcher.addObject(17, new Integer(0));
- this.dataWatcher.addObject(18, new Integer(1));
- this.dataWatcher.addObject(19, new Float(0.0F));
- }
- @Override
- public void onUpdate() {
- super.onUpdate();
- this.prevPosX = this.posX;
- this.prevPosY = this.posY;
- this.prevPosZ = this.posZ;
- if (this.canDoStuff) {
- for (int i = 0; i < seats.length; i++) {
- Vector3f f = this.file.ridersPositions.get(i);
- this.seats[i].setPosition(this.posX + f.x, this.posY + f.y + 0.5, this.posZ + f.z);
- }
- }
- wheelRotL+=speed;
- backWheelRotation+=speed;
- if(worldObj.isRemote)
- this.move();
- this.setPosition(vehicleX, vehicleY, vehicleZ);
- }
- public void move() {
- if(this.riddenByEntity!=null){
- if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
- if(steeringangle < 30){
- steeringangle += 3.5;
- }
- } else if (Keyboard.isKeyDown(Keyboard.KEY_D) ) {
- if(steeringangle > -30){
- steeringangle -= 3.5;
- }
- } else {
- if (steeringangle > 0) {
- steeringangle -= 2.5;
- if (steeringangle > 0) {
- steeringangle -= 2.5;
- }
- }
- if (steeringangle < 0) {
- steeringangle += 2.5;
- if (steeringangle < 0) {
- steeringangle += 2.5;
- }
- }
- }
- boolean pressedW;
- if(Keyboard.isKeyDown(Keyboard.KEY_W)){
- riddenByEntity.playSound("reallifemod:lambo_throttles", 1.0f, 1.0f);
- if(speed<file.maxSpeed){
- speed+=file.acceleration*20;
- }
- if(P<30){
- P+=2.5;
- }
- pressedW=true;
- }else
- {
- if(P>5){
- P-=0.5;
- }else
- P=0;
- }
- if(ticksExisted%3==0){
- riddenByEntity.playSound("reallifemod:lambo_runs", 1.0f, 1.0f+(float)P*0.1f);
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_S)){
- if(speed>-file.maxReverseSpeed){
- speed-=file.acceleration*1000/60/60*20;
- }
- }
- if(Keyboard.isKeyDown(Keyboard.KEY_SPACE)){
- if(speed<-5){
- speed+=5;
- }else
- if(speed<0){
- speed=0;
- }
- if(speed>5){
- speed-=5;
- }else{
- speed=0;
- }
- }
- double k=0;
- double R=0;
- if(steeringangle!=0){
- R=file.dimensions.z/steeringangle;
- k=1/R;
- }
- //double m = file.mass;
- /*V=speed*1000/m;
- double u= motionX;
- double v= motionZ;//
- V=Math.pow(((u*u)+(v*v)),0.5) ;
- double ax=u-r*v;
- double ay=v+r*u;
- double Pw;
- Vector2d F;
- double Fa;
- double W = m*g;
- */
- double r=((speed*1000)/60/60/20)*k;
- this.rotationYaw-=r;
- this.velocityX=-(speed*1000/60/60/20)*Math.sin(Math.toRadians(rotationYaw));
- this.velocityZ=(speed*1000/60/60/20)*Math.cos(Math.toRadians(rotationYaw));
- if(worldObj.isRemote){
- this.vehicleX+=velocityX;
- this.vehicleY+=velocityY;
- this.vehicleZ+=velocityZ;
- speed*=0.988888881;
- }else{}
- if(worldObj.isRemote){
- if(Keyboard.isKeyDown(Keyboard.KEY_P)){
- this.radio.play(Minecraft.getMinecraft().mcDataDir.getAbsolutePath()+"/RLM/music/mario_08.wav");
- }}}
- }
- @Override
- public void readEntityFromNBT(NBTTagCompound tagCompund) {
- }
- @Override
- public void writeEntityToNBT(NBTTagCompound tagCompound) {
- }
- @Override
- public boolean interactFirst(EntityPlayer player) {
- if (this.riddenByEntity == null&&!player.isDead) {
- player.mountEntity(this);
- return true;
- }
- else
- return false;
- }
- @Override
- public void updateRiderPosition() {
- if (riddenByEntity != null) {
- Vector3f pos=file.ridersPositions.get(0);
- double k=0;
- double R=0;
- if(steeringangle!=0){
- R=file.dimensions.z/steeringangle;
- k=1/R;
- }
- double r=((speed*1000)/60/60/80)*k;
- riddenByEntity.rotationYaw-=r;
- }
- riddenByEntity.setAir(0);
- riddenByEntity.setPosition(posX, posY-0.6, posZ);
- };
- public VehicleFile getFile() {
- return this.file;
- }
- public void setFile(VehicleFile file) {
- this.file = file;
- }
- public void setDamageTaken(float p_70266_1_) {
- this.dataWatcher.updateObject(19, Float.valueOf(p_70266_1_));
- }
- public float getDamageTaken() {
- return this.dataWatcher.getWatchableObjectFloat(19);
- }
- public void setTimeSinceHit(int p_70265_1_) {
- this.dataWatcher.updateObject(17, Integer.valueOf(p_70265_1_));
- }
- public int getTimeSinceHit() {
- return this.dataWatcher.getWatchableObjectInt(17);
- }
- public void setForwardDirection(int p_70269_1_) {
- this.dataWatcher.updateObject(18, Integer.valueOf(p_70269_1_));
- }
- public int getForwardDirection() {
- return this.dataWatcher.getWatchableObjectInt(18);
- }
- @Override
- protected boolean canTriggerWalking() {
- return false;
- }
- @Override
- public AxisAlignedBB getCollisionBox(Entity entityIn) {
- return entityIn.getEntityBoundingBox();
- }
- @Override
- public AxisAlignedBB getBoundingBox() {
- return this.getEntityBoundingBox();
- }
- public boolean canRiderInteract() {
- return true;
- }
- public boolean shouldDismountInWater(Entity rider) {
- return true;
- }
- @Override
- public void writeSpawnData(ByteBuf buffer) {
- }
- @Override
- public void readSpawnData(ByteBuf additionalData) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement