Buggy code:
pie . setCancelled ( true ) ; } if ( pie . isCancelled ( ) ) return ; PlayerState state = PlayerState . get ( player ) ; ReinforcementMode placementMode = state . getMode ( ) ; switch ( placementMode ) { case NORMAL : if ( ( access_reinforcement && normal_access_denied ) && admin_can_access ) { } return ; case REINFOREMENT_FORTIFICATION : return ; case REINFORCEMENT_INFORMATION : if ( reinforcement != null ) { String reinforcementStatus = reinforcement . getStatus ( ) ; Group group = reinforcement . getGroup ( ) ; StringBuilder sb ; if ( player . hasPermission ( "citadel.admin.ctinfodetails" ) ) { player . sendMessage ( ( ( ChatColor . GREEN ) + ( String . format ( "Loc[%s]" , reinforcement . getLocation ( ) . toString ( ) ) ) ) ) ; String groupName = "!NULL!" ; if ( group != null ) { groupName = String . format ( "[%s]<seq2seq4repair_space>(%s)" , group . getName ( ) , group . getType ( ) . name ( ) ) ; } sb = new StringBuilder ( ) ; sb . append ( String . format ( "<seq2seq4repair_space>Group%s<seq2seq4repair_space>Durability[%d//%d]" , groupName , reinforcement . getDurability ( ) , ReinforcementType . getReinforcementType ( reinforcement . getStackRepresentation ( ) ) . getHitPoints ( ) ) ) ; int maturationTime = Utility . timeUntilMature ( reinforcement ) ; if ( maturationTime != 0 ) { sb . append ( "<seq2seq4repair_space>Immature[" ) ; sb . append ( maturationTime ) ; sb . append ( "]" ) ; } if ( reinforcement . isInsecure ( ) ) { sb . append ( "<seq2seq4repair_space>(Insecure)" ) ; } if ( group . isDisciplined ( ) ) { sb . append ( "<seq2seq4repair_space>(Disciplined)" ) ; } player . sendMessage ( ( ( ChatColor . GREEN ) + ( sb . toString ( ) ) ) ) ; } else if ( reinforcement . isAccessible ( player , BLOCKS , DOORS , CHESTS ) ) { sb = new StringBuilder ( ) ; boolean immature = ( ( Utility . timeUntilMature ( reinforcement ) ) != 0 ) && ( ( CitadelConfigManager . isMaturationEnabled ( ) ) || ( ( CitadelConfigManager . getAcidBlock ( ) ) == ( block . getType ( ) ) ) ) ; String groupName = "!NULL!" ; if ( group != null ) { groupName = group . getName ( ) ; } sb . append ( String . format ( "%s,<seq2seq4repair_space>group:<seq2seq4repair_space>%s" , reinforcementStatus , groupName ) ) ; if ( immature ) { sb . append ( "<seq2seq4repair_space>(Hardening)" ) ; } if ( reinforcement . isInsecure ( ) ) { sb . append ( "<seq2seq4repair_space>(Insecure)" ) ; } player . sendMessage ( ( ( ChatColor . GREEN ) + ( sb . toString ( ) ) ) ) ; } else { player . sendMessage ( ( ( ChatColor . RED ) + reinforcementStatus ) ) ; } if ( ( player . getGameMode ( ) ) == ( GameMode . CREATIVE ) ) { pie . setCancelled ( true ) ; } } break ; case INSECURE : pie . setCancelled ( true ) ; if ( reinforcement != null ) { if ( reinforcement . isBypassable ( player ) ) { reinforcement . toggleInsecure ( ) ; Citadel . getReinforcementManager ( ) . saveReinforcement ( reinforcement ) ; if ( reinforcement . isInsecure ( ) ) { player . sendMessage ( ( ( ChatColor . YELLOW ) + "Reinforcement<seq2seq4repair_space>now<seq2seq4repair_space>insecure" ) ) ; } else { player . sendMessage ( ( ( ChatColor . GREEN ) + "Reinforcement<seq2seq4repair_space>secured" ) ) ; } } else { player . sendMessage ( ( ( ChatColor . RED ) + "Access<seq2seq4repair_space>denied" ) ) ; } } break ; case REINFORCEMENT : if ( reinforcement == null ) { ItemStack stack = player . getItemInHand ( ) ; ReinforcementType type = ReinforcementType . getReinforcementType ( stack ) ; if ( type == null ) { player . sendMessage ( ( ( ( ChatColor . RED ) + ( stack . getType ( ) . name ( ) ) ) + "<seq2seq4repair_space>is<seq2seq4repair_space>not<seq2seq4repair_space>a<seq2seq4repair_space>reinforcable<seq2seq4repair_space>material." ) ) ; state . reset ( ) ; return ; } state . setFortificationItemStack ( type . getItemStack ( ) ) ; if ( generic_reinforcement != null ) { Utility . reinforcementBroken ( null , generic_reinforcement ) ; } if ( Utility . wouldPlantDoubleReinforce ( block ) ) { player . sendMessage ( ( ( ChatColor . RED ) + "Cancelled<seq2seq4repair_space>reinforcement,<seq2seq4repair_space>crop<seq2seq4repair_space>would<seq2seq4repair_space>already<seq2seq4repair_space>be<seq2seq4repair_space>reinforced." ) ) ; } else { try { Utility . createPlayerReinforcement ( player , state . getGroup ( ) , block , state . getReinforcementType ( ) ) ; } catch ( ReinforcemnetFortificationCancelException e ) { } } } else <START_BUG> if ( reinforcement . isBypassable ( player ) ) { <END_BUG> String message = "" ; Group group = state . getGroup ( ) ; Group old_group = reinforcement . getGroup ( ) ; if ( ! ( old_group . getName ( ) . equals ( group . getName ( ) ) ) ) { reinforcement . setGroup ( group ) ; ReinforcementCreationEvent event = new ReinforcementCreationEvent ( reinforcement , block , player ) ; Bukkit . getPluginManager ( ) . callEvent ( event ) ; if ( ! ( event . isCancelled ( ) ) ) { rm . saveReinforcement ( reinforcement ) ; message = ( ( ( ChatColor . GREEN ) + "Group<seq2seq4repair_space>has<seq2seq4repair_space>been<seq2seq4repair_space>changed<seq2seq4repair_space>to:<seq2seq4repair_space>" ) + ( group . getName ( ) ) ) + "." ; player . sendMessage ( ( ( ChatColor . GREEN ) + message ) ) ; } else reinforcement . setGroup ( old_group ) ; } } else { player . sendMessage ( ( ( ChatColor . RED ) + "You<seq2seq4repair_space>are<seq2seq4repair_space>not<seq2seq4repair_space>permitted<seq2seq4repair_space>to<seq2seq4repair_space>modify<seq2seq4repair_space>this<seq2seq4repair_space>reinforcement" ) ) ; } pie . setCancelled ( true ) ; state . checkResetMode ( ) ; default : break ; } } catch ( Exception e ) { e . printStackTrace ( ) ; } } }

Fix:
if ( ( reinforcement . isBypassable ( player ) ) || ( ( player . isOp ( ) ) || ( player . hasPermission ( "citadel.admin" ) ) ) ) {