MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Entity seat flan

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    10 Messages 4 Publieurs 2.2k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • I Hors-ligne
      impuuu
      dernière édition par

      bonjour sa arrive assez souvent que mon serveur crach a cause de un entity.seat.name alor je voudrait savoir comment reglé sa dans les code source de flan’s

      erreur :

      –-- Minecraft Crash Report ----
      // Why did you do that?
      
      Time: 29/06/16 19:00
      Description: Ticking entity
      
      java.lang.ArrayIndexOutOfBoundsException: 0
      at com.flansmod.common.driveables.EntitySeat.pressKey(EntitySeat.java:434)
      at com.flansmod.common.driveables.EntitySeat.func_70071_h_(EntitySeat.java:165)
      at net.minecraft.world.World.func_72866_a(World.java:2674)
      at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:800)
      at net.minecraft.world.World.func_72870_g(World.java:2623)
      at net.minecraft.world.World.func_72939_s(World.java:2423)
      at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:633)
      at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:954)
      at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431)
      at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809)
      at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669)
      at java.lang.Thread.run(Thread.java:745)
      
      A detailed walkthrough of the error, its code path and all known details is as follows:
      ---------------------------------------------------------------------------------------
      
      -- Head --
      Stacktrace:
      at com.flansmod.common.driveables.EntitySeat.pressKey(EntitySeat.java:434)
      at com.flansmod.common.driveables.EntitySeat.func_70071_h_(EntitySeat.java:165)
      at net.minecraft.world.World.func_72866_a(World.java:2674)
      at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:800)
      at net.minecraft.world.World.func_72870_g(World.java:2623)
      
      -- Entity being ticked --
      Details:
      Entity Type: Seat (com.flansmod.common.driveables.EntitySeat)
      Entity ID: 1050228
      Entity Name: entity.Seat.name
      Entity's Exact location: -330.78, 17.88, -347.82
      Entity's Block location: World: (-331,17,-348), Chunk: (at 5,1,4 in -21,-22; contains blocks -336,0,-352 to -321,255,-337), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1)
      Entity's Momentum: 0.00, 0.00, 0.00
      Stacktrace:
      at net.minecraft.world.World.func_72939_s(World.java:2423)
      at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:633)
      
      -- Affected level --
      Details:
      Level name: world
      All players: 7 total; [EntityPlayerMP['LepigeonsMasque'/234, l='world', x=-229.39, y=14.29, z=-509.37](LepigeonsMasque at -229.3892195262015,14.28602547943592,-509.3653488960117), EntityPlayerMP['Suw_Atax'/16387, l='world', x=-228.96, y=14.29, z=-508.33](Suw_Atax at -228.95825831964612,14.28602547943592,-508.3261677529663), EntityPlayerMP['VenomeYTB'/25020, l='world', x=-331.53, y=17.31, z=-347.82](VenomeYTB at -331.5255207180977,17.3125,-347.819803081546), EntityPlayerMP['medion_2b'/135095, l='world', x=361.71, y=25.00, z=-496.84](medion_2b at 361.7081217134191,25.0,-496.8406900133848), EntityPlayerMP['yann01'/243295, l='world', x=6.87, y=17.00, z=-336.04](yann01 at 6.865906595759768,17.0,-336.04236838825125), EntityPlayerMP['Titi62132'/408360, l='world', x=-330.78, y=17.38, z=-347.82](Titi62132 at -330.77553168535235,17.375,-347.8238590328023), EntityPlayerMP['impuuu'/996154, l='world', x=346.05, y=25.24, z=-499.35](impuuu at 346.0475326675139,25.239819366003317,-499.3534348533973)]
      Chunk stats: ServerChunkCache: 1581 Drop: 0
      Level seed: -6571099612546317326
      Level generator: ID 01 - flat, ver 0\. Features enabled: true
      Level generator options: 2;7,15x3,2;1;
      Level spawn location: World: (5,17,-340), Chunk: (at 5,1,12 in 0,-22; contains blocks 0,0,-352 to 15,255,-337), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1)
      Level time: 93992730 game time, 96848469 day time
      Level dimension: 0
      Level storage version: 0x04ABD - Anvil
      Level weather: Rain time: 18348 (now: false), thunder time: 128297 (now: false)
      Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
      Stacktrace:
      at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:954)
      at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:431)
      at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:809)
      at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:669)
      at java.lang.Thread.run(Thread.java:745)
      
      – System Details --
      Details:
      Minecraft Version: 1.7.10
      KCauldron Version: pw.prok:KCauldron:1.7.10-1614.201 Official
      Plugins: WorldEdit, Skript, Essentials, GroupManager, Lift, ClearLag, SkQuery, WorldGuard, ProtocolLib, Multiverse-Core, SkinsRestorer, VoxelSniper, WildSkript, EssentialsChat, BanItem, Vault, EssentialsSpawn, JSONAPI, SimpleRegionMarket, ScoreboardStats, WiiPay, Citizens, skRayFall, ChestCommands, CommandNPC, Builder, AuthMe, SkMorkaz
      Disabled Plugins:
      Operating System: Linux (amd64) version 3.10.9-xxxx-grs-ipv6-64
      Java Version: 1.8.0_72, Oracle Corporation
      Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
      Memory: 262483048 bytes (250 MB) / 1370488832 bytes (1307 MB) up to 9320792064 bytes (8889 MB)
      JVM Flags: 3 total; -Xmx10000M -Xms10M -XX:MaxPermSize=10000m
      AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
      IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
      FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 21 mods loaded, 21 mods active
      States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
      UCHIJAAAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
      UCHIJAAAA FML{7.10.99.99} [Forge Mod Loader] (KCauldron-1.7.10-1614.201.jar)
      UCHIJAAAA Forge{10.13.4.1614} [Minecraft Forge] (KCauldron-1.7.10-1614.201.jar)
      UCHIJAAAA kimagine{0.2} [KImagine] (minecraft.jar)
      UCHIJAAAA securitycraft{v1.8.1} [SecurityCraft] ([1.7.10] SecurityCraft v1.8.1.jar)
      UCHIJAAAA Backpack{2.0.1} [Backpack] (backpack-2.0.1-1.7.x.jar)
      UCHIJAAAA cfm{3.4.8} [�9MrCrayfish's Furniture Mod] (cfm-3.4.8-mc1.7.10.jar)
      UCHIJAAAA customnpcs{1.7.10d} [CustomNpcs] (CustomNPCs_1.7.10d(21feb16).jar)
      UCHIJAAAA flenixcities{0.13.0} [FlenixCities] (FlenixCitiesCore_[1.7.10]-0.13.0-b105.jar)
      UCHIJAAAA fc_research{0.4.0} [FlenixCities Research] (FlenixCitiesResearch_[1.7.10]-0.4.jar)
      UCHIJAAAA FoodPlus{3.2rS} [§bFood Plus] (FoodPlus-1.7.2-3.2rS.jar)
      UCHIJAAAA gvc{0.6.1} [�aGliby's�f Voice Chat Mod] (GlibysVC-1.7.10-0.6.2a.jar)
      UCHIJAAAA flansmod{@VERSION@} [Flan's Mod] (HavenRPV2.jar)
      UCHIJAAAA havenrp{2.0} [HavenRP] (HavenRPV2.jar)
      UCHIJAAAA hidenames{1.1.7} [Hide Names] (Hide Names-1.7.10-1.1.8.jar)
      UCHIJAAAA malisiscore{1.7.10-0.14.3} [MalisisCore] (malisiscore-1.7.10-0.14.3.jar)
      UCHIJAAAA malisisdoors{1.7.10-1.13.2} [Malisis' Doors] (malisisdoors-1.7.10-1.13.2.jar)
      UCHIJAAAA MapWriter{2.1.2} [MapWriter] (Map.jar)
      UCHIJAAAA Monoblocks{1.10.28} [�1M�2o�3n�4o�5b�6l�7o�8c�9k�as] (Monoblocks-1.10.28.jar)
      UCHIJAAAA MonoblocksMultipart{1.10.28} [MonoblocksMultipart] (Monoblocks-1.10.28.jar)
      UCHIJAAAA thirstmod{1.8.9} [Thirst Mod] (thirstmod-1.8.9.jar)
      Profiler Position: N/A (disabled)
      Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
      Player Count: 7 / 50; [EntityPlayerMP['LepigeonsMasque'/234, l='world', x=-229.39, y=14.29, z=-509.37](LepigeonsMasque at -229.3892195262015,14.28602547943592,-509.3653488960117), EntityPlayerMP['Suw_Atax'/16387, l='world', x=-228.96, y=14.29, z=-508.33](Suw_Atax at -228.95825831964612,14.28602547943592,-508.3261677529663), EntityPlayerMP['VenomeYTB'/25020, l='world', x=-331.53, y=17.31, z=-347.82](VenomeYTB at -331.5255207180977,17.3125,-347.819803081546), EntityPlayerMP['medion_2b'/135095, l='world', x=361.71, y=25.00, z=-496.84](medion_2b at 361.7081217134191,25.0,-496.8406900133848), EntityPlayerMP['yann01'/243295, l='world', x=6.87, y=17.00, z=-336.04](yann01 at 6.865906595759768,17.0,-336.04236838825125), EntityPlayerMP['Titi62132'/408360, l='world', x=-330.78, y=17.38, z=-347.82](Titi62132 at -330.77553168535235,17.375,-347.8238590328023), EntityPlayerMP['impuuu'/996154, l='world', x=346.05, y=25.24, z=-499.35](impuuu at 346.0475326675139,25.239819366003317,-499.3534348533973)]
      Is Modded: Definitely; Server brand changed to 'kcauldron,cauldron,craftbukkit,mcpc,fml,forge'
      Type: Dedicated Server (map_server.txt)
      
      

      code de la classe entityseat

      package com.flansmod.common.driveables;
      
      import java.util.List;
      
      import io.netty.buffer.ByteBuf;
      import net.minecraft.client.Minecraft;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLiving;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemLead;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.util.AxisAlignedBB;
      import net.minecraft.util.DamageSource;
      import net.minecraft.util.MovingObjectPosition;
      import net.minecraft.util.Vec3;
      import net.minecraft.world.World;
      import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      
      import com.flansmod.api.IControllable;
      import com.flansmod.client.FlansModClient;
      import com.flansmod.common.FlansMod;
      import com.flansmod.common.RotatedAxes;
      import com.flansmod.common.guns.EnumFireMode;
      import com.flansmod.common.guns.GunType;
      import com.flansmod.common.guns.ItemShootable;
      import com.flansmod.common.guns.ShootableType;
      import com.flansmod.common.network.PacketDriveableKey;
      import com.flansmod.common.network.PacketDriveableKeyHeld;
      import com.flansmod.common.network.PacketPlaySound;
      import com.flansmod.common.network.PacketSeatUpdates;
      import com.flansmod.common.teams.TeamsManager;
      import com.flansmod.common.tools.ItemTool;
      import com.flansmod.common.vector.Vector3f;
      
      public class EntitySeat extends Entity implements IControllable, IEntityAdditionalSpawnData
      {
      /** Set this to true when the client has found the parent driveable and connected them */
      @SideOnly(Side.CLIENT)
      public boolean foundDriveable;
      private int driveableID;
      private int seatID;
      public EntityDriveable driveable;
      
      @SideOnly(Side.CLIENT)
      public float playerRoll, prevPlayerRoll;
      
      public Seat seatInfo;
      public boolean driver;
      
      /** A set of axes used to calculate where the player is looking, x axis is the direction of looking, y is up */
      public RotatedAxes looking;
      /** For smooth renderering */
      public RotatedAxes prevLooking;
      /** Delay ticker for shooting guns */
      public int gunDelay;
      /** Minigun speed */
      public float minigunSpeed;
      /** Minigun angle for render */
      public float minigunAngle;
      
      /** Sound delay ticker for looping sounds */
      public int soundDelay;
      
      private double playerPosX, playerPosY, playerPosZ;
      private float playerYaw, playerPitch;
      /** For smoothness */
      private double prevPlayerPosX, prevPlayerPosY, prevPlayerPosZ;
      private float prevPlayerYaw, prevPlayerPitch;
      private boolean shooting;
      
      /** Default constructor for spawning client side 
      * Should not be called server side EVER */
      public EntitySeat(World world) 
      {
      super(world);
      setSize(1F, 1F);
      prevLooking = new RotatedAxes();
      looking = new RotatedAxes();
      }
      
      /** Server side seat constructor */
      public EntitySeat(World world, EntityDriveable d, int id) 
      {
      this(world);
      driveable = d;
      driveableID = d.getEntityId();
      seatInfo = driveable.getDriveableType().seats[id];
      driver = id == 0;
      setPosition(d.posX, d.posY, d.posZ);
      playerPosX = prevPlayerPosX = posX;
      playerPosY = prevPlayerPosY = posY;
      playerPosZ = prevPlayerPosZ = posZ;
      looking.setAngles((seatInfo.minYaw + seatInfo.maxYaw) / 2, 0F, 0F);
      //updatePosition();
      }
      
      @Override
      public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int i)
      {
      //setPosition(x, y, z);
      }
      
      @Override
      public void onUpdate()
      {
      super.onUpdate();
      //prevPosX = posX;
      //prevPosY = posY;
      //prevPosZ = posZ;
      
      //If on the client and the driveable parent has yet to be found, search for it
      if(worldObj.isRemote && !foundDriveable)
      {
      driveable = (EntityDriveable)worldObj.getEntityByID(driveableID);
      if(driveable == null)
      return;
      foundDriveable = true;
      driveable.seats[seatID] = this;
      seatInfo = driveable.getDriveableType().seats[seatID];
      looking.setAngles((seatInfo.minYaw + seatInfo.maxYaw) / 2, 0F, 0F);
      playerPosX = prevPlayerPosX = posX = driveable.posX;
      playerPosY = prevPlayerPosY = posY = driveable.posY;
      playerPosZ = prevPlayerPosZ = posZ = driveable.posZ;
      setPosition(posX, posY, posZ);
      }
      //Update gun delay ticker
      if(gunDelay > 0)
      gunDelay–;
      //Update sound delay ticker
      if(soundDelay > 0)
      soundDelay--;
      
      //updatePosition();
      
      //If on the client
      if(worldObj.isRemote)
      {
      if(driver && riddenByEntity == Minecraft.getMinecraft().thePlayer && FlansModClient.controlModeMouse && driveable.hasMouseControlMode())
      {
      looking = new RotatedAxes();
      }
      //DEBUG : Spawn particles along axes
      
      Vector3f xAxis = driveable.axes.findLocalAxesGlobally(looking).getXAxis();
      Vector3f yAxis = driveable.axes.findLocalAxesGlobally(looking).getYAxis();
      Vector3f zAxis = driveable.axes.findLocalAxesGlobally(looking).getZAxis();
      Vector3f yOffset = driveable.axes.findLocalVectorGlobally(new Vector3f(0F, riddenByEntity == null ? 0F : (float)riddenByEntity.getYOffset(), 0F));
      for(int i = 0; i < 10; i++)
      {
      //worldObj.spawnParticle("enchantmenttable", posX + xAxis.x * i * 0.3D + yOffset.x, posY + xAxis.y * i * 0.3D + yOffset.y, posZ + xAxis.z * i * 0.3D + yOffset.z, 0, 0, 0);
      //worldObj.spawnParticle("smoke", posX + yAxis.x * i * 0.3D + yOffset.x, posY + yAxis.y * i * 0.3D + yOffset.y, posZ + yAxis.z * i * 0.3D + yOffset.z, 0, 0, 0);
      //worldObj.spawnParticle("reddust", posX + zAxis.x * i * 0.3D + yOffset.x, posY + zAxis.y * i * 0.3D + yOffset.y, posZ + zAxis.z * i * 0.3D + yOffset.z, 0, 0, 0);
      }
      }
      
      if(riddenByEntity instanceof EntityPlayer && shooting)
      pressKey(9, (EntityPlayer)riddenByEntity);
      
      minigunSpeed *= 0.95F;
      minigunAngle += minigunSpeed;
      //prevLooking = looking.clone();
      }
      
      /** Set the position to be that of the driveable plus the local position, rotated */
      public void updatePosition()
      {
      //If we haven't found our driveable, give up
      if(worldObj.isRemote && !foundDriveable)
      return;
      
      prevPlayerPosX = playerPosX;
      prevPlayerPosY = playerPosY;
      prevPlayerPosZ = playerPosZ;
      
      prevPlayerYaw = playerYaw;
      prevPlayerPitch = playerPitch;
      
      //Get the position of this seat on the driveable axes
      Vector3f localPosition = new Vector3f(seatInfo.x / 16F, seatInfo.y / 16F, seatInfo.z / 16F);
      
      //Rotate the offset vector by the turret yaw
      if(driveable != null && driveable.seats != null && driveable.seats[0] != null && driveable.seats[0].looking != null)
      {
      RotatedAxes yawOnlyLooking = new RotatedAxes(driveable.seats[0].looking.getYaw(), 0F, 0F);
      Vector3f rotatedOffset = yawOnlyLooking.findLocalVectorGlobally(seatInfo.rotatedOffset);
      Vector3f.add(localPosition, new Vector3f(rotatedOffset.x, 0F, rotatedOffset.z), localPosition);
      }
      
      //If this seat is connected to the turret, then its position vector on the driveable axes needs an extra rotation in it
      //if(driveable.rotateWithTurret(seatInfo) && driveable.seats[0] != null)
      //localPosition = driveable.seats[0].looking.findLocalVectorGlobally(localPosition);
      //Get the position of this seat globally, but positionally relative to the driveable
      Vector3f relativePosition = driveable.axes.findLocalVectorGlobally(localPosition);
      //Set the absol
      setPosition(driveable.posX + relativePosition.x, driveable.posY + relativePosition.y, driveable.posZ + relativePosition.z);
      
      if(riddenByEntity != null)
      {
          DriveableType type = driveable.getDriveableType();
      Vec3 yOffset = driveable.rotate(0, riddenByEntity.getYOffset(), 0).toVec3();
      
      playerPosX = posX + yOffset.xCoord;
      playerPosY = posY + yOffset.yCoord;
      playerPosZ = posZ + yOffset.zCoord;
      
      riddenByEntity.lastTickPosX = riddenByEntity.prevPosX = prevPlayerPosX;
      riddenByEntity.lastTickPosY = riddenByEntity.prevPosY = prevPlayerPosY;
      riddenByEntity.lastTickPosZ = riddenByEntity.prevPosZ = prevPlayerPosZ;
                  riddenByEntity.setPosition(playerPosX, playerPosY, playerPosZ);  
      
                  //Calculate the local look axes globally
      RotatedAxes globalLookAxes = driveable.axes.findLocalAxesGlobally(looking);
      //Set the player's rotation based on this
      playerYaw = -90F + globalLookAxes.getYaw();
      playerPitch = globalLookAxes.getPitch();
      
      double dYaw = playerYaw - prevPlayerYaw;
      if(dYaw > 180)
      prevPlayerYaw += 360F;
      if(dYaw < -180)
      prevPlayerYaw -= 360F;
      
      if(riddenByEntity instanceof EntityPlayer)
      {
      riddenByEntity.prevRotationYaw = prevPlayerYaw;
      riddenByEntity.prevRotationPitch = prevPlayerPitch;
      
      riddenByEntity.rotationYaw = playerYaw;
      riddenByEntity.rotationPitch = playerPitch;
      }
      
      //If the entity is a player, roll its view accordingly
      if(worldObj.isRemote)
      {
      prevPlayerRoll = playerRoll;
      playerRoll = -globalLookAxes.getRoll();
      }
      }
      }
      
      @Override
          public void updateRiderPosition()
          {
      if(riddenByEntity instanceof EntityPlayer)
      {
      riddenByEntity.rotationYaw = playerYaw;
      riddenByEntity.rotationPitch = playerPitch;
      riddenByEntity.prevRotationYaw = prevPlayerYaw;
      riddenByEntity.prevRotationPitch = prevPlayerPitch;
      }
      riddenByEntity.lastTickPosX = riddenByEntity.prevPosX = prevPlayerPosX;
      riddenByEntity.lastTickPosY = riddenByEntity.prevPosY = prevPlayerPosY;
      riddenByEntity.lastTickPosZ = riddenByEntity.prevPosZ = prevPlayerPosZ;
          }
      
      @Override
      @SideOnly(Side.CLIENT)
      public EntityLivingBase getCamera()
      {
      return driveable.getCamera();
      }
      
      @Override
          public boolean canBeCollidedWith()
          {
              return !isDead;
          }
      
      @Override
          protected void entityInit()
          {
          }
      
      @Override
          public float getShadowSize()
          {
              return 4.0F;
          }
      
      @Override
      protected void readEntityFromNBT(NBTTagCompound tags) 
      {
      //Do not read. Spawn with driveable
      }
      
      @Override
      protected void writeEntityToNBT(NBTTagCompound tags) 
      {
      //Do not write. Spawn with driveable
      }
      
      @Override
          public boolean writeToNBTOptional(NBTTagCompound tags)
          {
              return false;
          }
      
      @Override
          public boolean writeMountToNBT(NBTTagCompound tags)
          {
              return false;
          }
      
      @Override
      public void onMouseMoved(int deltaX, int deltaY) 
      {
      if(!foundDriveable)
      return;
      
      prevLooking = looking.clone();
      
      //Driver seat should pass input to driveable
      if(driver)
      {
      driveable.onMouseMoved(deltaX, deltaY);
      }
      //Other seats should look around, but also the driver seat if mouse control mode is disabled
      if(!driver || !FlansModClient.controlModeMouse || !driveable.hasMouseControlMode())
      {
      float lookSpeed = 4F;
      
      //Calculate the new pitch and consider pitch limiters
      float newPitch = looking.getPitch() - deltaY / lookSpeed * Minecraft.getMinecraft().gameSettings.mouseSensitivity;
      if(newPitch > -seatInfo.minPitch)
      newPitch = -seatInfo.minPitch;
      if(newPitch < -seatInfo.maxPitch)
      newPitch = -seatInfo.maxPitch;
      
      //Calculate new yaw and consider yaw limiters
      float newYaw = looking.getYaw() + deltaX / lookSpeed * Minecraft.getMinecraft().gameSettings.mouseSensitivity;
      //Since the yaw limiters go from -360 to 360, we need to find a pair of yaw values and check them both
      float otherNewYaw = newYaw - 360F; 
      if(newYaw < 0)
      otherNewYaw = newYaw + 360F;
      if((newYaw >= seatInfo.minYaw && newYaw <= seatInfo.maxYaw) || (otherNewYaw >= seatInfo.minYaw && otherNewYaw <= seatInfo.maxYaw))
      {
      //All is well
      }
      else
      {
      float newYawDistFromRange = Math.min(Math.abs(newYaw - seatInfo.minYaw), Math.abs(newYaw - seatInfo.maxYaw));
      float otherNewYawDistFromRange = Math.min(Math.abs(otherNewYaw - seatInfo.minYaw), Math.abs(otherNewYaw - seatInfo.maxYaw));
      //If the newYaw is closer to the range than the otherNewYaw, move newYaw into the range
      if(newYawDistFromRange <= otherNewYawDistFromRange)
      {
      if(newYaw > seatInfo.maxYaw)
      newYaw = seatInfo.maxYaw;
      if(newYaw < seatInfo.minYaw)
      newYaw = seatInfo.minYaw;
      }
      //Else, the otherNewYaw is closer, so move it in
      else
      {
      if(otherNewYaw > seatInfo.maxYaw)
      otherNewYaw = seatInfo.maxYaw;
      if(otherNewYaw < seatInfo.minYaw)
      otherNewYaw = seatInfo.minYaw;
      //Then match up the newYaw with the otherNewYaw
      if(newYaw < 0)
      newYaw = otherNewYaw - 360F;
      else newYaw = otherNewYaw + 360F;
      }
      }
      //Now set the new angles
      looking.setAngles(newYaw, newPitch, 0F);
      
      FlansMod.getPacketHandler().sendToServer(new PacketSeatUpdates(this));
      }
      }
      
      @Override
      public void updateKeyHeldState(int key, boolean held)
      {
      if(worldObj.isRemote && foundDriveable)
      {
      FlansMod.getPacketHandler().sendToServer(new PacketDriveableKeyHeld(key, held));
      
      }
      if(driver)
      {
      driveable.updateKeyHeldState(key, held);
      }
      else if(key == 9)
      { 
      shooting = held;
      }
      }
      
      @Override
      public boolean pressKey(int key, EntityPlayer player) 
      {
      //Driver seat should pass input to driveable
      if(driver && (!worldObj.isRemote || foundDriveable))
      {
      return driveable.pressKey(key, player);
      }
      
      if(worldObj.isRemote)
      {
      if(foundDriveable)
      {
      FlansMod.getPacketHandler().sendToServer(new PacketDriveableKey(key));
      if(key == 9)
      minigunSpeed += 0.1F;
      }
      return false;
      }
      
      //Exit key pressed
      if(key == 6 && riddenByEntity != null)
      riddenByEntity.mountEntity(null);
      
      if(key == 9) //Shoot
      {
      //Get the gun from the plane type and the ammo from the data
      GunType gun = seatInfo.gunType;
      
      minigunSpeed += 0.1F;
      
      if(gun != null && gun.mode != EnumFireMode.MINIGUN || minigunSpeed > 2F)
      {
      if(gunDelay <= 0 && TeamsManager.bulletsEnabled)
      {
      
      ItemStack bulletItemStack = driveable.getDriveableData().ammo[seatInfo.gunnerID];
      //Check that neither is null and that the bullet item is actually a bullet
      if(gun != null && bulletItemStack != null && bulletItemStack.getItem() instanceof ItemShootable)
      {
      ShootableType bullet = ((ItemShootable)bulletItemStack.getItem()).type;
      if(gun.isAmmo(bullet))
      {
      //Gun origin
      Vector3f gunOrigin = Vector3f.add(driveable.axes.findLocalVectorGlobally(seatInfo.gunOrigin), new Vector3f(driveable.posX, driveable.posY, driveable.posZ), null);
      //Calculate the look axes globally
      RotatedAxes globalLookAxes = driveable.axes.findLocalAxesGlobally(looking);
      Vector3f shootVec = driveable.axes.findLocalVectorGlobally(looking.getXAxis());
      //Calculate the origin of the bullets
      Vector3f yOffset = driveable.axes.findLocalVectorGlobally(new Vector3f(0F, (float)player.getMountedYOffset(), 0F));
      //Spawn a new bullet item
      worldObj.spawnEntityInWorld(((ItemShootable)bulletItemStack.getItem()).getEntity(worldObj, Vector3f.add(yOffset, new Vector3f(gunOrigin.x, gunOrigin.y, gunOrigin.z), null), shootVec, (EntityLivingBase)riddenByEntity, gun.bulletSpread, gun.damage, gun.bulletSpeed, bulletItemStack.getItemDamage(), driveable.getDriveableType()));
      //Play the shoot sound
      if(soundDelay <= 0)
      {
      PacketPlaySound.sendSoundPacket(posX, posY, posZ, FlansMod.soundRange, dimension, gun.shootSound, false);
      soundDelay = gun.shootSoundLength;
      }
      //Get the bullet item damage and increment it
      int damage = bulletItemStack.getItemDamage();
      bulletItemStack.setItemDamage(damage + 1);
      //If the bullet item is completely damaged (empty)
      if(damage + 1 == bulletItemStack.getMaxDamage())
      {
      //Set the damage to 0 and consume one ammo item (unless in creative)
      bulletItemStack.setItemDamage(0);
      if(!((EntityPlayer)riddenByEntity).capabilities.isCreativeMode)
      driveable.getDriveableData().decrStackSize(3 + seatID, 1);
      }
      //Reset the shoot delay
      gunDelay = gun.shootDelay;
      }
      }
      }
      }
      }
      return false;
      }
      
      @Override
      public boolean interactFirst(EntityPlayer entityplayer) //interact : change back when Forge updates
          {
      if(isDead)
      return false;
      if(worldObj.isRemote)
      return false;
      //If they are using a repair tool, don't put them in
      ItemStack currentItem = entityplayer.getCurrentEquippedItem();
      if(currentItem != null && currentItem.getItem() instanceof ItemTool && ((ItemTool)currentItem.getItem()).type.healDriveables)
      return true;
      if(currentItem != null && currentItem.getItem() instanceof ItemLead)
      {
      if(riddenByEntity != null && riddenByEntity instanceof EntityLiving && !(riddenByEntity instanceof EntityPlayer))
      {
      EntityLiving mob = (EntityLiving)riddenByEntity;
      riddenByEntity.mountEntity(null);
      mob.setLeashedToEntity(entityplayer, true);
      return true;
      }
      double checkRange = 10;
      List nearbyMobs = worldObj.getEntitiesWithinAABB(EntityLiving.class, AxisAlignedBB.getBoundingBox(posX - checkRange, posY - checkRange, posZ - checkRange, posX + checkRange, posY + checkRange, posZ + checkRange));
      for(Object obj : nearbyMobs)
      {
      EntityLiving entity = (EntityLiving)obj;
      if(entity.getLeashed() && entity.getLeashedToEntity() == entityplayer)
      {
      entity.mountEntity(this);
      looking.setAngles(-entity.rotationYaw, entity.rotationPitch, 0F);
      entity.clearLeashed(true, !entityplayer.capabilities.isCreativeMode);
      }
      }
      return true;
      }
      //Put them in the seat
      if(riddenByEntity == null)
      {
      entityplayer.mountEntity(this);
      return true;
      }
              return false;
          }
      
      @Override
      public Entity getControllingEntity() 
      {
      return riddenByEntity;
      }
      
      @Override
      public boolean isDead() 
      {
      return isDead;
      }
      
      @Override
      public void setDead()
      {
      super.setDead();
      }
      
      /**
      @Override
          public void updateRiderPosition()
          {
      if(riddenByEntity == null || (worldObj.isRemote && !foundDriveable))
              {
                  return;
              } else
              {
              DriveableType type = driveable.getDriveableType();
      Vec3 yOffset = driveable.rotate(0, riddenByEntity.getYOffset(), 0).toVec3();
      
      return;
              }
          }
      **/
      
      @Override
          public ItemStack getPickedResult(MovingObjectPosition target)
          {
      if(worldObj.isRemote && !foundDriveable)
      return null;
      return driveable.getPickedResult(target);
          }
      
      @Override
      public float getPlayerRoll() 
      {
      for(; playerRoll - prevPlayerRoll > 180F; playerRoll -= 360F) ;
      for(; playerRoll - prevPlayerRoll < -180F; playerRoll += 360F) ;
      return playerRoll;
      }
      
      @Override
      public float getCameraDistance()
      {
      return foundDriveable && seatID == 0 ? driveable.getDriveableType().cameraDistance : 5F;
      }
      
      @Override
      public boolean attackEntityFrom(DamageSource source, float f) {
      return !(worldObj.isRemote && !foundDriveable) && driveable.attackEntityFrom(source, f);
      }
      
      @Override
      public void writeSpawnData(ByteBuf data) 
      {
      data.writeInt(driveableID);
      data.writeInt(seatInfo.id);
      }
      
      @Override
      public void readSpawnData(ByteBuf data) 
      {
      driveableID = data.readInt();
      driveable = (EntityDriveable)worldObj.getEntityByID(driveableID);
      seatID = data.readInt();
      driver = seatID == 0;
      if(driveable != null)
      {
      seatInfo = driveable.getDriveableType().seats[seatID];
      looking.setAngles((seatInfo.minYaw + seatInfo.maxYaw) / 2, 0F, 0F);
      playerPosX = prevPlayerPosX = posX = driveable.posX;
      playerPosY = prevPlayerPosY = posY = driveable.posY;
      playerPosZ = prevPlayerPosZ = posZ = driveable.posZ;
      setPosition(posX, posY, posZ);
      }
      
      }
      
      public float getMinigunSpeed() 
      {
      return minigunSpeed;
      }
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • SCAREXS Hors-ligne
        SCAREX
        dernière édition par

        “driveable.getDriveableData().ammo[seatInfo.gunnerID];” -> driveable ou le driveable data est nul mais impossible de savoir lequel. Tu peux peut être résoudre ça en rajoutant un null check

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 réponse Dernière réponse Répondre Citer 0
        • I Hors-ligne
          impuuu
          dernière édition par

          je le rajoute ou le null check

          1 réponse Dernière réponse Répondre Citer 0
          • SCAREXS Hors-ligne
            SCAREX
            dernière édition par

            Euh après ?

            (ceci est un troll)
            Avant la ligne qui pose problème

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              Rien n’est null.
              Le tableau est vide, ce n’est pas pareil.

              if(gunDelay <= 0 && TeamsManager.bulletsEnabled)
              {
              ItemStack bulletItemStack = driveable.getDriveableData().ammo[seatInfo.gunnerID];
              

              devient :

              if(gunDelay <= 0 && TeamsManager.bulletsEnabled && driveable.getDriveableData().ammo.length > 0)
              {
              ItemStack bulletItemStack = driveable.getDriveableData().ammo[seatInfo.gunnerID];
              
              1 réponse Dernière réponse Répondre Citer 0
              • SCAREXS Hors-ligne
                SCAREX
                dernière édition par

                Ah oui effectivement je me suis trompé d’erreur, désolé

                Site web contenant mes scripts : http://SCAREXgaming.github.io

                Pas de demandes de support par MP ni par skype SVP.
                Je n'accepte sur skype que l…

                1 réponse Dernière réponse Répondre Citer 0
                • I Hors-ligne
                  impuuu
                  dernière édition par

                  Ok mais je vois de ligne de code qui crach la 434 et 165

                  1 réponse Dernière réponse Répondre Citer 0
                  • SCAREXS Hors-ligne
                    SCAREX
                    dernière édition par

                    Celle importante est 434 car le code appelé à la ligne 165 appelle la fonction contenant le code qui crash

                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                    Pas de demandes de support par MP ni par skype SVP.
                    Je n'accepte sur skype que l…

                    1 réponse Dernière réponse Répondre Citer 0
                    • YeyvoY Hors-ligne
                      Yeyvo
                      dernière édition par

                      Ohhhh ! c’est la première fois que je voit scarex faire une erreur a part durant les live (je dt ça pour rigolé 😉 )

                      1 réponse Dernière réponse Répondre Citer 0
                      • I Hors-ligne
                        impuuu
                        dernière édition par

                        donc j ai juste a mettre le code que vous m’avais donné merci

                        1 réponse Dernière réponse Répondre Citer 0
                        • 1 / 1
                        • Premier message
                          Dernier message
                        Design by Woryk
                        ContactMentions Légales

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB