Buggy code:
public class Torrent { public static ConcurrentHashMap < Player , Torrent > instances = new ConcurrentHashMap < Player , Torrent > ( ) ; private static ConcurrentHashMap < TempBlock , Player > frozenblocks = new ConcurrentHashMap < TempBlock , Player > ( ) ; static FileConfiguration config = plugin . getConfig ( ) ; static long interval = 30 ; static double RANGE = Torrent . config . getInt ( "Abilities.Water.Torrent.Range" ) ; private static int defaultrange = 20 ; private static int selectrange = 10 ; private static int DAMAGE = Torrent . config . getInt ( "Abilities.Water.Torrent.Damage" ) ; private static int DEFLECT_DAMAGE = Torrent . config . getInt ( "Abilities.Water.Torrent.DeflectDamage" ) ; private static int maxlayer = 3 ; private static double factor = 1 ; private static double radius = 3 ; private static double ylimit = 0.2 ; private static final byte full = 0 ; private Block sourceblock ; private TempBlock source ; private Location location ; private Player player ; private long time ; private double startangle = 0 ; private double angle = 20 ; private int layer = 0 ; private boolean sourceselected = false ; private boolean settingup = false ; private boolean forming = false ; private boolean formed = false ; private boolean launch = false ; private boolean launching = false ; private boolean freeze = false ; private double range = Torrent . RANGE ; private int damage = Torrent . DAMAGE ; private int deflectdamage = Torrent . DEFLECT_DAMAGE ; private ArrayList < TempBlock > blocks = new ArrayList < TempBlock > ( ) ; private ArrayList < TempBlock > launchblocks = new ArrayList < TempBlock > ( ) ; private ArrayList < Entity > hurtentities = new ArrayList < Entity > ( ) ; public Torrent ( Player player ) { } private void freeze ( ) { } private void progress ( ) { } private boolean launch ( ) { } private void formRing ( ) { } private void clearRing ( ) { } private void remove ( ) { } private void returnWater ( Location location ) { } public static void use ( Player player ) { } public static void create ( Player player ) { } private void use ( ) { } private void deflect ( Entity entity ) { } private void affect ( Entity entity , Vector direction ) { } public static void progressAll ( ) { for ( Player player : Torrent . instances . keySet ( ) ) Torrent . instances . get ( player ) . progress ( ) ; for ( TempBlock block : Torrent . frozenblocks . keySet ( ) ) { Player player = Torrent . frozenblocks . get ( block ) ; if ( ( block . getBlock ( ) . getType ( ) ) != ( Material . ICE ) ) { Torrent . frozenblocks . remove ( block ) ; continue ; } if ( ( block . getBlock ( ) . getWorld ( ) ) != ( player . getWorld ( ) ) ) { Torrent . thaw ( block ) ; continue ; } <START_BUG> if ( ( ( block . getLocation ( ) . distance ( player . getLocation ( ) ) ) > ( Torrent . instances . get ( player ) . range ) ) || ( ! ( Methods . canBend ( player . getName ( ) , "Torrent" ) ) ) ) { <END_BUG> Torrent . thaw ( block ) ; } } } public static void thaw ( Block block ) { } public static void thaw ( TempBlock block ) { } public static boolean canThaw ( Block block ) { } public static void removeAll ( ) { } public static boolean wasBrokenFor ( Player player , Block block ) { } public static String getDescription ( ) { } public Player getPlayer ( ) { } public int getDamage ( ) { } public void setDamage ( int damage ) { } public int getDeflectdamage ( ) { } public void setDeflectdamage ( int deflectdamage ) { } public double getRange ( ) { } public void setRange ( double range ) { } No newline ; at end ; of file ; }

Fix:
if ( ( ( block . getLocation ( ) . distance ( player . getLocation ( ) ) ) > ( Torrent . RANGE ) ) || ( ! ( Methods . canBend ( player . getName ( ) , "Torrent" ) ) ) ) {