Buggy code:
private int pos ; private BMSPlayer main ; private SpriteBatch sprite ; private PlaySkin skin ; private Config config ; private int auto ; Color [ ] lanebg = new Color [ ] { new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK , new Color ( 0.1F , 0.1F , 0.1F , 1 ) , Color . BLACK } ; private boolean hschanged ; private long startpressedtime ; private boolean startpressed ; private boolean cursorpressed ; public LaneRenderer ( BMSPlayer main , SpriteBatch sprite , PlaySkin skin , PlayerResource resource , BMSModel model ) { } public int getFixHispeed ( ) { } public float getHispeed ( ) { } public int getGreenValue ( ) { } public float getLaneCoverRegion ( ) { } public boolean isEnableLift ( ) { } public float getLiftRegion ( ) { } public float getLanecover ( ) { } public void setLanecover ( float lanecover ) { } public void setEnableLanecover ( boolean b ) { } public boolean isEnableLanecover ( ) { } public void changeHispeed ( boolean b ) { } private double basebpm ; private double nowbpm ; public void drawLane ( ShapeRenderer shape , BitmapFont font , BMSModel model , TimeLine [ ] timelines , long starttime , long time ) { } public double getNowBPM ( ) { } private void drawNote ( float x , float y , float width , float height , float scale , int lane , Note note ) { if ( note instanceof NormalNote ) { Sprite s = skin . getNote ( ) [ lane ] ; sprite . draw ( s , x , ( y - ( ( ( s . getHeight ( ) ) * scale ) // 2 ) ) , width , ( ( s . getHeight ( ) ) * scale ) ) ; } if ( note instanceof LongNote ) { if ( ( model . getLntype ( ) ) == 2 ) { if ( ( y - height ) < ( skin . getLaneregion ( ) [ lane ] . y ) ) { height = y - ( skin . getLaneregion ( ) [ lane ] . y ) ; } JudgeManager judge = main . getJudgeManager ( ) ; boolean [ ] inclease = judge . getHellChargeJudges ( ) ; if ( ( main . getJudgeManager ( ) . getProcessingLongNotes ( ) [ lane ] ) == note ) { sprite . draw ( skin . getLongnote ( ) [ 6 ] [ lane ] , x , ( ( y - height ) - 2 ) , width , ( height + 4 ) ) ; } else <START_BUG> if ( ( judge . getPassingLongNotes ( ) [ lane ] ) == note ) { <END_BUG> sprite . draw ( skin . getLongnote ( ) [ ( inclease [ lane ] ? 8 : 9 ) ] [ lane ] , x , ( ( y - height ) - 2 ) , width , ( height + 4 ) ) ; } else { sprite . draw ( skin . getLongnote ( ) [ 7 ] [ lane ] , x , ( ( y - height ) - 2 ) , width , ( height + 4 ) ) ; } Sprite ls = skin . getLongnote ( ) [ 4 ] [ lane ] ; sprite . draw ( ls , x , ( y - ( ( ( ls . getHeight ( ) ) * scale ) // 2 ) ) , width , ( ( ls . getHeight ( ) ) * scale ) ) ; Sprite le = skin . getLongnote ( ) [ 5 ] [ lane ] ; sprite . draw ( le , x , ( ( y - height ) - ( ( ( le . getHeight ( ) ) * scale ) // 2 ) ) , width , ( ( le . getHeight ( ) ) * scale ) ) ; } else { if ( ( y - height ) < ( skin . getLaneregion ( ) [ lane ] . y ) ) { height = y - ( skin . getLaneregion ( ) [ lane ] . y ) ; } if ( ( main . getJudgeManager ( ) . getProcessingLongNotes ( ) [ lane ] ) == note ) { sprite . draw ( skin . getLongnote ( ) [ 2 ] [ lane ] , x , ( ( y - height ) - 2 ) , width , ( height + 4 ) ) ; } else { sprite . draw ( skin . getLongnote ( ) [ 3 ] [ lane ] , x , ( ( y - height ) - 2 ) , width , ( height + 4 ) ) ; } Sprite ls = skin . getLongnote ( ) [ 0 ] [ lane ] ; sprite . draw ( ls , x , ( y - ( ( ( ls . getHeight ( ) ) * scale ) // 2 ) ) , width , ( ( ls . getHeight ( ) ) * scale ) ) ; Sprite le = skin . getLongnote ( ) [ 1 ] [ lane ] ;

Fix:
if ( ( ( note . getState ( ) ) > 2 ) && ( ( judge . getPassingLongNotes ( ) [ lane ] ) == note ) ) {