@@ -549,14 +549,24 @@ public void shoot(boolean secondary)
549549
550550 private boolean driverIsCreative ()
551551 {
552- return seats != null && seats [0 ] != null && seats [0 ].getControllingPassenger () instanceof EntityPlayer && ((EntityPlayer )seats [0 ].getControllingPassenger ()).capabilities .isCreativeMode ;
552+ EntityPlayer driver = getDriver ();
553+ if (driver != null )
554+ {
555+ return driver .capabilities .isCreativeMode ;
556+ } else {
557+ return false ;
558+ }
553559 }
554560
555- private EntityPlayer getDriver ()
561+ public EntityPlayer getDriver ()
556562 {
557563 if (seats != null && seats [0 ] != null && seats [0 ].getControllingPassenger () instanceof EntityPlayer )
564+ {
558565 return ((EntityPlayer )seats [0 ].getControllingPassenger ());
559- else return null ;
566+ }
567+ else {
568+ return null ;
569+ }
560570 }
561571
562572 private void shootEach (DriveableType type , DriveablePosition shootPoint , int currentGun , boolean secondary , EnumWeaponType weaponType )
@@ -890,11 +900,12 @@ else if(passenger instanceof EntityWheel)
890900 IBlockState block = world .getBlockState (new BlockPos (blockX , blockY , blockZ ));
891901
892902 boolean cancelled = false ;
893- if (seats [ 0 ] != null && seats [ 0 ]. getControllingPassenger () instanceof EntityPlayerMP )
903+ if (getDriver () != null )
894904 {
895905 int eventOutcome = ForgeHooks .onBlockBreakEvent (world ,
896- ((EntityPlayerMP )seats [0 ].getControllingPassenger ()).capabilities .isCreativeMode ? GameType .CREATIVE : ((EntityPlayerMP )seats [0 ].getControllingPassenger ()).capabilities .allowEdit ? GameType .SURVIVAL : GameType .ADVENTURE ,
897- (EntityPlayerMP )seats [0 ].getControllingPassenger (), new BlockPos (blockX , blockY , blockZ ));
906+ driverIsCreative () ? GameType .CREATIVE : getDriver ().capabilities .allowEdit
907+ ? GameType .SURVIVAL : GameType .ADVENTURE ,
908+ (EntityPlayerMP )getDriver (), new BlockPos (blockX , blockY , blockZ ));
898909 cancelled = eventOutcome == -1 ;
899910 }
900911 if (!cancelled )
@@ -1032,12 +1043,12 @@ else if(EnumDriveablePart.getPart(emitter.part) == EnumDriveablePart.turret || E
10321043 boolean canThrust = driverIsCreative () || driveableData .fuelInTank > 0 ;
10331044
10341045 //If there's no player in the driveable or it cannot thrust, slow the plane and turn off mouse held actions
1035- if ((seats [ 0 ] != null && seats [ 0 ]. getControllingPassenger () == null ) || !canThrust && getDriveableType ().maxThrottle != 0 && getDriveableType ().maxNegativeThrottle != 0 )
1046+ if ((getDriver () == null ) || !canThrust && getDriveableType ().maxThrottle != 0 && getDriveableType ().maxNegativeThrottle != 0 )
10361047 {
10371048 throttle *= 0.98F ;
10381049 rightMouseHeld = leftMouseHeld = false ;
10391050 }
1040- else if (seats [ 0 ] != null && seats [ 0 ]. getControllingPassenger () != null && seats [ 0 ]. getControllingPassenger () == getControllingPassenger ())
1051+ else if (getDriver () != null && getDriver () == getControllingPassenger ())
10411052 {
10421053 ReportVehicleError ();
10431054 }
@@ -1347,14 +1358,14 @@ public ItemStack getPickedResult(RayTraceResult target)
13471358
13481359 public boolean hasFuel ()
13491360 {
1350- if (seats == null || seats [ 0 ] == null || seats [ 0 ]. getControllingPassenger () == null )
1361+ if (getDriver () == null )
13511362 return false ;
13521363 return driverIsCreative () || driveableData .fuelInTank > 0 ;
13531364 }
13541365
13551366 public boolean hasEnoughFuel ()
13561367 {
1357- if (seats == null || seats [ 0 ] == null || seats [ 0 ]. getControllingPassenger () == null )
1368+ if (getDriver () == null )
13581369 return false ;
13591370 return driverIsCreative () || driveableData .fuelInTank > driveableData .engine .fuelConsumption * throttle ;
13601371
0 commit comments